Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Crosshair per videogiochi infami
Forum - Visual Basic 6 - Crosshair per videogiochi infami

Avatar
Nevinyrral (Normal User)
Newbie


Messaggi: 13
Iscritto: 28/04/2011

Segnala al moderatore
Postato alle 22:28
Venerdì, 16/12/2011
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

Codice sorgente - presumibilmente VB.NET

  1. ' preparazione trasparenza---
  2. Option Explicit
  3.  
  4. Private Declare Function GetWindowLong Lib "user32" _
  5.     Alias "GetWindowLongA" ( _
  6.     ByVal hWnd As Long, _
  7.     ByVal nIndex As Long) As Long
  8.    
  9. Private Declare Function SetWindowLong Lib "user32" _
  10.     Alias "SetWindowLongA" ( _
  11.     ByVal hWnd As Long, _
  12.     ByVal nIndex As Long, _
  13.     ByVal dwNewLong As Long) As Long
  14.    
  15. Private Declare Function SetLayeredWindowAttributes Lib "user32" ( _
  16.     ByVal hWnd As Long, _
  17.     ByVal crKey As Long, _
  18.     ByVal bAlpha As Byte, _
  19.     ByVal dwFlags As Long) As Long
  20.    
  21. Private Const GWL_EXSTYLE = (-20)
  22. Private Const WS_EX_LAYERED = &H80000
  23. Private Const LWA_COLORKEY = &H1&
  24. Private Const LWA_ALPHA = &H2&
  25. '---



ed applicare la trasparenza

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2.  
  3. 'applica trasparenza al form---
  4. BackColor = RGB(127, 127, 0)
  5. SetWindowLong hWnd, _
  6. GWL_EXSTYLE, _
  7. GetWindowLong(hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
  8. SetLayeredWindowAttributes hWnd, BackColor, 0, LWA_COLORKEY
  9.     '---
  10.    
  11.    
  12. End Sub



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

Codice sorgente - presumibilmente VB.NET

  1. 'ricavare key input
  2. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  3.  
  4. Private Sub Timer1_Timer()
  5.  
  6. Dim result, i As Integer
  7. Dim Scrit As Integer
  8.  
  9.  'sistema di chiusura premendo 5 volte ' chr=219
  10.  
  11. For i = 1 To 255
  12.  
  13.    result = 0
  14.    result = GetAsyncKeyState(i)
  15.    
  16.    If result = -32767 Then
  17.      
  18.      
  19.  If i = 219 Then
  20.  
  21.  Label1.Caption = Label1.Caption + 1
  22.  
  23.  End If
  24.  
  25.  If Label1.Caption = 5 Then
  26.  
  27.  End
  28.  
  29.  End If
  30.  
  31.  
  32.  
  33.  End If
  34.  
  35.  Next i
  36.  
  37.   '---
  38.    
  39. 'tenere visibile il form
  40.    Form1.Show
  41. '---  
  42. End Sub



Dopo di che ho fatto un form 500 x 500 con due linie rosse http://puu.sh/aNTQ 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 il 16/12/2011 alle 22:30
PM
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 16:24
Sabato, 17/12/2011
prova ad utilizzare: Me.SetFocus

oppure per manterlo sempre in primo piano puoi usare:

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. 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
  4. Private Const SWP_NOMOVE = &H2
  5. Private Const SWP_NOSIZE = &H1
  6. Private Const HWND_TOPMOST = -1
  7.  
  8. Private Sub Form_Load()
  9.  
  10. SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
  11. End Sub


Ora passandoci le finestre sopra rimane sempre in primo piano ed è un passo avanti ma massimizando la schermata ancora non ci siamo comunque l'istruzione è molto utile - Nevinyrral - 19/12/11 14:34
PM
Avatar
Garu (Normal User)
Newbie


Messaggi: 13
Iscritto: 02/08/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 10:56
Domenica, 18/12/2011
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

Ci son altre applicazioni che lo fanno tipo "FRAPS" con fli fps che probabilmente è fatto in C++ e io non conosco - Nevinyrral - 19/12/11 14:33
PM