Option ExplicitPrivate Sub Command1_Click()
Dim Tmp As Long
    SendMessageCallback -1, 15, 0, 0, AddressOf SednAsyncProc, Tmp
End Sub
/////////////////////
Attribute VB_Name = "Module1"
Option Explicit
Public Declare Function SendMessageCallback Lib "user32" Alias "SendMessageCallbackA" (ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal lpResultCallBack As Long, ByVal dwData As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPublic Function SednAsyncProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal dwData As Long, ByVal lResult As Long) As Long
Dim szTitalBuffer As String * 1024
Dim sf As String * 254
//MsgBox hWnd
    GetWindowText hWnd, szTitalBuffer, 1024
    If InStr(szTitalBuffer, "新建 文本文") <> 0 Then MsgBox hWnd
End Function
vb的代码是没问题的,可运行
delphi我自己转了以后他找不到句柄
谢谢啦,也可以QQ我:434459

解决方案 »

  1.   

    好熟悉,好像我刚改了一段vc的代码,怎么又出来一段vb的
      

  2.   

    procedure SendAsyncProc(_hwnd:HWND;uMsg: UINT;dwData:LongWord; _lResult: LRESULT); stdcall;
    var
      szTitalBuffer :array[0.. 1023] of CHAR;begin
      szTitalBuffer[GetWindowText(_hwnd, @szTitalBuffer, 1024)] := #0;
      if Pos('新建 文本文',szTitalBuffer) > 0 then MessageBox(GetActiveWindow,PAnsiChar(IntToStr(_hwnd)),'Test', MB_OK);
      //if Pos('无标题 - 记事本',szTitalBuffer) > 0 then MessageBox(GetActiveWindow,PAnsiChar(IntToStr(_hwnd)),'Test', MB_OK);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMessageCallback($ffffffff, WM_PAINT, 0, 0, @SendAsyncProc, 0)
    end;