Oppure

Loading
16/12/11 21:28
Nevinyrral
Grazie per l'attenzione,

sto cercando di fare un crosshair per un video gioco dove nessun arma ha il mirino apparte una ed è un po fastidioso, specialmente per i novizzi quindi ho cercato di fare questa applicazione con il seguente codice:

per rendere il form trasparente

 ' preparazione trasparenza---
Option Explicit

Private Declare Function GetWindowLong Lib "user32" _
    Alias "GetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long
    
Private Declare Function SetWindowLong Lib "user32" _
    Alias "SetWindowLongA" ( _
    ByVal hWnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
    
Private Declare Function SetLayeredWindowAttributes Lib "user32" ( _
    ByVal hWnd As Long, _
    ByVal crKey As Long, _
    ByVal bAlpha As Byte, _
    ByVal dwFlags As Long) As Long
    
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_COLORKEY = &H1&
Private Const LWA_ALPHA = &H2&
'--- 


ed applicare la trasparenza

 
Private Sub Form_Load()

'applica trasparenza al form---
BackColor = RGB(127, 127, 0)
SetWindowLong hWnd, _
GWL_EXSTYLE, _
GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
SetLayeredWindowAttributes hWnd, BackColor, 0, LWA_COLORKEY
    '---
    
    
End Sub 


è un vecchio trucchetto che mi ha insegnato un amico poi ho fatto un timer per spegnere l'applicazione non avendo pulsanti

 'ricavare key input
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Timer1_Timer()

Dim result, i As Integer
Dim Scrit As Integer

 'sistema di chiusura premendo 5 volte ' chr=219

For i = 1 To 255

   result = 0
   result = GetAsyncKeyState(i)
   
   If result = -32767 Then
      
     
 If i = 219 Then
 
 Label1.Caption = Label1.Caption + 1
 
 End If
 
 If Label1.Caption = 5 Then
 
 End
 
 End If
 

 
 End If
 
 Next i
 
  '---
   
'tenere visibile il form
   Form1.Show
'---   
End Sub



Dopo di che ho fatto un form 500 x 500 con due linie rosse puu.sh/… che stanno perfettamente al centro senza aver bisogno della risoluzione grazie ha StartUpPosition = 1.

Normalemente funziona, il problema è che questo gioco è tutto schermo e non so perche non ci va sopra anche con form1.show ogni millesimo di secondo, in Java non son ancora capace a fare questa applicazione, mi sapreste dare qualche pezzo di codice in più per farlo funzionare anche sulle applicazione massimizate?
Ultima modifica effettuata da Nevinyrral 16/12/11 21:30
aaa
17/12/11 15:24
GrG
prova ad utilizzare: Me.SetFocus

oppure per manterlo sempre in primo piano puoi usare:

Option Explicit

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const HWND_TOPMOST = -1

Private Sub Form_Load()

SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
aaa
18/12/11 9:56
Garu
Non credo tu possa 'andar sopra' ad un applicazione a tutto schermo con un altra finestra, potresti però provare a disegnare sulla finestra a tutto schermo
aaa