この記事の例では、VB で実装された「QQ Beauty 間違い探しゲーム」の不正行為装置について説明します。皆さんの参考に共有してください。詳細は以下のとおりです。
原理は非常に単純ですが、VB を使用すると時間がかかりますが、実装は簡単です。
オプション ExplicitPrivate タイプ sPOINT x As Long y As LongEnd TypePrivate 宣言関数 GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate 宣言関数 GetPixel Lib "gdi32" (ByVal hdc As Long、ByVal x As Long、ByVal y As Long) As 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' ウィンドウをリストの先頭に配置し、任意の上 上部ウィンドウの前面 Private Const SWP_NOSIZE& = &H1' ウィンドウ サイズを維持 Private Const SWP_NOMOVE& = &H2' ウィンドウの位置を保持します Private Sub Form_Load()SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE または SWP_NOSIZE' ウィンドウを常に最前面に設定します End Sub' 長い RGB 値を 3 つのコンポーネントに分解します Sub ColorRGB(Color 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) 長さとして、p2(497, 447) 長さとして、C1(3) 整数として、C2(3) As Integer '配列サイズは画像のサイズと一致します Dim pic1 As sPOINT, pic2 As sPOINT '2 つの画像の画面位置を設定します 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) ' i = 0 の 2 つの画像を読み取ります497 j = 0 ~ 447 の場合 p1(i, j) = GetPixel(hD, i + pic1.x, j + pic1.y) p2(i, j) = GetPixel(hD, i + pic2.x, j + pic2 .y) Next Next 'コントラスト、違いをマークします Dim t As Boolean t = True For i = 0 To 497 For j = 0 To 447 Call ColorRGB(p1(i, j), C1()) ColorRGB(p2(i, j), C2()) を呼び出す If (Abs(C1(1) - C2(1)) > 30 Or Abs(C1(2) - C2(2)) > 30 または Abs(C1(3) - C2(3)) > 30) then t = Not t If t then 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
この記事が皆様の VB プログラミングのお役に立てれば幸いです。