O exemplo deste artigo descreve o dispositivo de trapaça do "QQ Beauty Find Difference Game" implementado em VB. Compartilhe com todos para sua referência. Os detalhes são os seguintes:
É muito chato. O princípio é muito simples. Usar VB é mais lento, mas a implementação é fácil.
Opção ExplicitPrivate Tipo sPOINT x As Long y As LongEnd TypePrivate Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Função de declaração LongPrivate 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 LongPrivate Const HWND_TOPMOST& = -1' Coloque a janela no topo da lista e acima de qualquer Frente da janela superior Private Const SWP_NOSIZE& = &H1' Manter o tamanho da janela Private Const SWP_NOMOVE& = &H2' Mantém a posição da janela Private Sub Form_Load()SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Ou SWP_NOSIZE' Define a janela para estar sempre no topo End Sub' Decompõe o valor RGB longo em 3 componentes Sub ColorRGB(Cor As Long, C() As Integer) Const ByN As Integer = 256 Const ByN2 As Long = 65536 C(1) = (Color Mod ByN) C(2) = ((Color Mod ByN2) / ByN) C(3) = (Color / ByN2)End SubPrivate Sub GetPoint() Dim p1( 497, 447) Tão Longo, p2(497, 447) Tão Longo, C1(3) Quanto Inteiro, C2(3) As Integer 'O tamanho da matriz corresponde ao tamanho da imagem Dim pic1 As sPOINT, pic2 As sPOINT 'Define a posição da tela das duas imagens pic1.x = 8 pic1.y = 192 pic2.x = 517 pic2.y = 192 Dim h As Long, hD As Long, r As Long, i As Integer, j As Integer hD = GetDC(0) 'Lê duas imagens para i = 0 To 497 Para j = 0 Para 447 p1(i, j) = GetPixel(hD, i + pic1.x, j + pic1.y) p2(i, j) = GetPixel(hD, i + pic2.x, j + pic2 .y) Próximo Próximo 'Contraste, marque a diferença Dim t As Boolean t = True For i = 0 To 497 For j = 0 To 447 Call ColorRGB(p1(i, j), C1()) Chame ColorRGB(p2(i, j), C2()) Se (Abs(C1(1) - C2(1)) > 30 Ou Abs(C1(2) - C2(2)) > 30 Ou Abs(C1(3) - C2(3)) > 30) Então t = Não t Se t Então Picture1.ForeColor = &H0& Else Picture1.ForeColor = &HFF00& End If Else Picture1.ForeColor = p1(i, j) End If Picture1.PSet (i, j) Next NextEnd SubPrivate Sub Picture1_Click()Me.Visible = FalseDoEventsGetPointMe.Visible = TrueEnd Sub
Espero que este artigo seja útil para a programação VB de todos.