findwindowexa

易語言如何取出父窗口句柄下的子句柄??FindWindowEx函數功能:該函數獲得一個窗口的句柄,該窗口的類名和窗口名與給定的字符串相匹配 。這個函數查找子窗口,從排在給定的子窗口后面的下一個子窗口開始 。在查找時不區分大小寫 。函數原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);參數;hwndParent:要查找子窗口的父窗口句柄 。如果hwndParent為NULL,則函數以桌面窗口為父窗口,查找桌面窗口的所有子窗口 。Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函數僅查找所有消息窗口 。hwndChildAfter :子窗口句柄 。查找從在Z序中的下一個子窗口開始 。子窗口必須為hwndParent窗口的直接子窗口而非后代窗口 。如果HwndChildAfter為NULL,查找從hwndParent的第一個子窗口開始 。如果hwndParent 和 hwndChildAfter同時為NULL,則函數查找所有的頂層窗口及消息窗口 。lpszClass:指向一個指定了類名的空結束字符串,或一個標識類名字符串的成員的指針 。如果該參數為一個成員,則它必須為前次調用theGlobaIAddAtom函數產生的全局成員 。該成員為16位,必須位于lpClassName的低16位,高位必須為0 。lpszWindow:指向一個指定了窗口名(窗口標題)的空結束字符串 。如果該參數為 NULL,則為所有窗口全匹配 。返回值:如果函數成功,返回值為具有指定類名和窗口名的窗口句柄 。如果函數失敗,返回值為NULL 。

如何用findwindowex遍歷某個窗口里的所有子窗口for (HWND hChildWnd = ::GetTopWindow(m_hWnd); hChildWnd != NULL; hChildWnd = ::GetNextWindow(hChildWnd, GW_HWNDNEXT)) { CWnd* pWnd = CWnd::FromHandle(hChildWnd); if (pWnd != NULL) { //... } }

如何使用FindWindowEx獲取窗體內控件句柄一般用FindWindow 。。。

Delphi中獲取其它進程的窗口句柄,在Delphi中獲取其它進程的窗口句柄,絕大部分人首先想到的會使用:FindWindow或者用GetWindow來遍歷查找,如:

Delphi/Pascal code?
handle := FindWindow(nil,PChar('窗口的標題'));

或者:

Delphi/Pascal code?

procedure TForm1.Button1Click(Sender: TObject);
var
hCurrentWindow: HWnd;
WndText:String;
begin
hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
while hCurrentWindow0 do
begin
WndText:=GetWndText(hCurrentWindow);
if UpperCase(WndText)='窗口的標題' then begin
...
...
end;
hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;
end;

因為目前網絡上絕大部分的代碼都是介紹用這兩種方法取得其它進程的窗口句柄 。雖這兩種方法都可以達到查找其它進程的窗口句柄的目的,但本人認為這兩都方法存在較大的弊端 。因為這兩種方法都是根據其它進程的標題來查找的,如果其它進程的標題在運行時不斷的發生變化,那么這兩種方法就無法沒辦法用了 。

介紹第三種通過進程的文件名來查找窗口句柄 。首先通過進程快照得到要查找的進程ID(ProcessId),其次,再跟據ProcessId獲取進程的窗口句柄 。以下為本文章的代碼:

Delphi/Pascal code?
uses TLHelp32;

procedure TForm1.Button1Click(Sender: TObject);
var
ProcessName : string; //進程名
FSnapshotHandle:THandle; //進程快照句柄
FProcessEntry32:TProcessEntry32; //進程入口的結構體信息
ContinueLoop:BOOL;
MyHwnd:THandle;
begin
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //創建一個進程快照
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32); //得到系統中第一個進程
//循環例舉
while ContinueLoop do
begin
ProcessName := FProcessEntry32.szExeFile;

if(ProcessName = '要找的應用程序名.exe') then begin
MyHwnd := GetHWndByPID(FProcessEntry32.th32ProcessID);
...

...
end;
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);//釋放快照句柄
end;

//跟據ProcessId獲取進程的窗口句柄

function TForm1.GetHWndByPID(const hPID: THandle): THandle;
type
PEnumInfo = ^TEnumInfo;
TEnumInfo = record
ProcessID: DWORD;
HWND: THandle;
end;

function EnumWindowsProc(Wnd: DWORD; var EI: TEnumInfo): Bool; stdcall;
var
PID: DWORD;
begin
GetWindowThreadProcessID(Wnd, @PID);
Result := (PIDEI.ProcessID) or
(not IsWindowVisible(WND)) or
(not IsWindowEnabled(WND));

if not Result then EI.HWND := WND;
end;

function FindMainWindow(PID: DWORD): DWORD;
var
EI: TEnumInfo;
begin
EI.ProcessID := PID;
EI.HWND := 0;
EnumWindows(@EnumWindowsProc, Integer(@EI));
Result := EI.HWND;
end;
begin
if hPID0 then
Result:=FindMainWindow(hPID)
else
Result:=0;
end;

我說的是組件的句柄,不是窗體的句柄

findwindowex();獲取指定句柄窗口下的子控件,當然是有句柄的控件

窗體的句柄都知道,還能不知道里面組件的句柄?——windows標準組件

procedure TForm1.Button2Click(Sender: TObject);
var
canvas1: TCanvas;
begin
Canvas1 := TCanvas.Create;

//這是OK 。這真要感謝baidu,google
canvas1.Handle:= GetDc(panel1.Handle);

canvas1.TextOut(1,1,'hello');
canvas1.Free ;
Form1.Canvas.TextOut(10,10,'fff');
end;

有的組件是沒有句柄的
ShowMessage(IntToStr(TWinControl(Form1.FindChildControl('Panel1')).Handle));

易語言如何取窗口句柄(不用模塊)FindWindowExA

怎么使用FindWindowEx獲取窗體內控件句柄如果不用鼠標獲取,可以先知道窗口的類名,用函數GetClassName,然后用FindWindow來取句柄

獲得文本框中的文本的句柄的方法,請高手指示 VC++&&WINAPI文本的句柄?文本還有句柄,如果是要得到文本框的句柄可以用GetDlgItem函數;

如果你想得到里面的文本內容可以這樣:
MFC的方法:
CString str;
GetDlgItem(IDC_EDIT)->GetWindowText(str); //str里就是文本的內容了

這樣就可以了 。

補充:
你補充的描述,我還是不是太明白,最后的目的不就是為了得到文本框或編輯框中的字符嗎,如果是這樣的話,用我上面的方法完全就可以了 。
首先如果有一個編輯框,你在其中輸入的大量的字符,而你不執行任何操作的話,程序是無法獲得這些字符的 。使用GetWindowText函數后,就把這些字符全部存放到了變量str中 。str是一個CString類型的變量,它的內存大小是根據字符串的多少自動分配的,這樣還省了你自己分配內存呢 。
如果想得到這些字符串的大小,可以使用CString類的GetLength函數:
int nLength = str.GetLengeh();//得到輸入的字符串長度
另外CString類中還有很多字符串處理的函數方便你的調用 。

如何獲得一個文本框的句柄?最好用VC來做,因為要寫鉤子 。
建議先用SPY++試試,應該能找到你要的Text,然后寫一個鉤子就可以啦

vb 知道了文本框控件句柄,如何將焦點設置于該文本框之上?FunctionSetActiveWindowLib"user32.dll"(ByValhwndAsLong)AsLong

SetActiveWindow (Phwnd)
SetForegroundWindow (Phwnd)

在新線程中怎么獲取文本框的控制句柄?DWORD WINAPI initSocker(LPVOID lpvoid) {
CMySocketDlg* pWnd = (CMySocketDlg*)lpvoid;
XXX xxx = pWnd->m_MSG;//m_MSG究竟是什么東西,控制句柄?樓主沒解釋明白,這里用XXX表示,貌似:HWND hWndEdit = pWnd->m_MSG;???
//如果要修改m_MSG,請使用“&”操作符--->XXX& xxx = pWnd->m_MSG;
...
}

CMySocketDlg::CMySocketDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMySocketDlg::IDD, pParent)
{
...
CreateThread(NULL, NULL, initSocker, (LPVOID)this, NULL, NULL);
...
}

如何獲得對話框中編輯框句柄hEdit1 = GetDlgItem(GUI_ID_EDIT1)->m_hWnd;

VB中findwindowex函數的用法 。。FindWindowEx函數

函數功能:在窗口列表中尋找與指定條件相符的第一個子窗口。
該函數獲得一個窗口的句柄,該窗口的類名和窗口名與給定的字符串相匹配 。這個函數查找子窗口,從排在給定的子窗口后面的下一個子窗口開始 。在查找時不區分大小寫 。
參數:(1)hwndParent:要查找的子窗口所在的父窗口的句柄(如果設置了hwndParent,則表示從這個hwndParent指向的父窗口中搜索子窗口) 。
如果hwndParent為 0,則函數以桌面窗口為父窗口,查找桌面窗口的所有子窗口 。
Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函數僅查找所有消息窗口 。
(2)hwndChildAfter :子窗口句柄 。查找從在Z序中的下一個子窗口開始 。子窗口必須為hwndParent窗口的直接子窗口而非后代窗口 。如果HwndChildAfter為NULL,查找從hwndParent的第一個子窗口開始 。如果hwndParent 和 hwndChildAfter同時為NULL,則函數查找所有的頂層窗口及消息窗口 。
(3)lpszClass:指向一個指定了類名的空結束字符串,或一個標識類名字符串的成員的指針 。如果該參數為一個成員,則它必須為前次調用theGlobaIAddAtom函數產生的全局成員 。該成員為16位,必須位于lpClassName的低16位,高位必須為0 。
(4)lpszWindow:指向一個指定了窗口名(窗口標題)的空結束字符串 。如果該參數為 NULL,則為所有窗口全匹配 。
返回值:Long,找到的窗口的句柄 。如未找到相符窗口,則返回零 。會設置GetLastError
如果函數成功,返回值為具有指定類名和窗口名的窗口句柄 。如果函數失敗,返回值為NULL 。
若想獲得更多錯誤信息,請調用GetLastError函數 。
聲明:1.VB 聲明
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
2.C# 聲明
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
3.VB .NET 聲明
_
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
ByVal childAfter As IntPtr, _
ByVal lclassName As String, _
ByVal windowTitle As String) As IntPtr
End Function

相關例子:
'Example Name: Changing a VB Toolbar to a Rebar-Style Toolbar
BAS Moduel Code
Option Explicit
Public Const WM_USER= &H400
Public Const TB_SETSTYLE = WM_USER + 56
Public Const TB_GETSTYLE = WM_USER + 57
Public Const TBSTYLE_FLAT = &H800
Public Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" _
(ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
'--end block--'
' Form Code
Option Explicit
Private Sub Form_Load()
With Combo1
.Width = Toolbar1.Buttons("combo1").Width
.Top = (Toolbar1.Height - Combo1.Height) \ 2
.Left = Toolbar1.Buttons("combo1").Left
.AddItem "Black" ' Add colours for text.

還是findwindowex問題,能詳細說一下各參數用法嗎啊?謝謝FindWindowEx
函數功能:該函數獲得一個窗口的句柄,該窗口的類名和窗口名與給定的字符串相匹配 。這個函數查找子窗口,從排在給定的子窗口后面的下一個子窗口開始 。在查找時不區分大小寫 。
函數原型:HWND FindWindowEx(HWND1 hwndParent,HWND2 hwndChildAfter,LPCTSTR1 lpszClass,LPCTSTR2 lpszWindow);
參數;
hwndParent:要查找子窗口的父窗口句柄 。如果hwndParent為NULL,則函數以桌面窗口為父窗口,查找桌面窗口的所有子窗口 。Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函數僅查找所有消息窗口 。
hwndChildAfter :子窗口句柄 。查找從在Z序中的下一個子窗口開始 。子窗口必須為hwndParent窗口的直接子窗口而非后代窗口 。如果HwndChildAfter為NULL,查找從hwndParent的第一個子窗口開始 。如果hwndParent 和 hwndChildAfter同時為NULL,則函數查找所有的頂層窗口及消息窗口 。
lpszClass:指向一個指定了類名的空結束字符串,或一個標識類名字符串的成員的指針 。如果該參數為一個成員,則它必須為前次調用theGlobaIAddAtom函數產生的全局成員 。該成員為16位,必須位于lpClassName的低16位,高位必須為0 。
lpszWindow:指向一個指定了窗口名(窗口標題)的空結束字符串 。如果該參數為 NULL,則為所有窗口全匹配 。返回值:如果函數成功,返回值為具有指定類名和窗口名的窗口句柄 。如果函數失敗,返回值為NULL 。若想獲得更多錯誤信息,請調用GetLastError函數 。
在窗口列表中尋找與指定條件相符的第一個子窗口
返回值:Long,找到的窗口的句柄 。如未找到相符窗口,則返回零 。會設置GetLastErrorhWnd1 Long,在其中查找子的父窗口 。如設為零,表示使用桌面窗口(通常說的頂級窗口都被認為是桌面的子窗口,所以也會對它們進行查找)
hWnd2 Long,從這個窗口后開始查找 。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子窗口 。如設為零,表示從第一個子窗口開始搜索
lpsz1 String,欲搜索的類名 。零表示忽略
lpsz2 String,欲搜索的窗體名 。零表示忽略

易語言中api findwindowEx 用法第一個參數填寫你要尋找的子窗口 的父窗口句柄
第二個參數填寫0 表示從第一個子窗口開始尋找
第三個參數填寫你要尋找的子窗口的類名
第四個參數填寫你要尋找的子窗口的標題

FindWindowExW這個函數是干什么用的? 然后它的參數都是什么含義?跟FindWindow的功能一樣,就是根據窗口名字和窗口類找窗口句柄 。具體用法參見百度百科 。

在VB中,已知主窗口句柄,如何用FindWindowEx找到第二個文本框的句柄首先,一個窗口的句柄根本不是固定的,所以用常量來表示一個窗口句柄是不合適的 。VB的窗體都有一個名為hWnd的屬性,這個屬性里保存的就是這個窗口的句柄 。其次,“#32770”是普通窗體的窗口類名,如果要找這樣的窗口,可以用handle = FindWindow(窗口類名, 窗口名)來尋找它 。如果要尋找子窗口的句柄,假設父窗口的句柄為phandle,那么可以用chandle = FindWindowEx(phandle, 0, 子窗口類名, vbNullString)來完成 。此時,找到的是父窗口內第一個類名為“子窗口類名”的子窗口 。如果要找到下一個子窗口,需要用chandle2 = FindWindowEx(phandle, chandle, 子窗口類名, vbNullString)來完成 。現在,已經知道了第一個子窗口的句柄為h1,子窗口類名為"EDIT",那么我們可以用如下語句來尋找第二個子窗口:h2 = FindWindowEx(874523, h1, "EDIT", vbNullString)不過還是建議用一個變量來保存父窗口的句柄 。順便說一下,如果此時h2為0,那就是說,這個父窗口內沒有第二個類名為"EDIT"的子窗口了 。
VB中findwindowex函數的用法 。。用法錯誤:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Sub Command1_Click()
Dim hwnd2 As Long
hwnd2 = FindWindow(vbNullString, "計算器")
MsgBox hwnd2, , "。"
hwnd2 = FindWindowEx(hwnd2, 0&, "edit", vbNullString)
MsgBox hWnd, , ""
End Sub

vb里的findwindowex api 怎么用?首先你這個程序必須正在運行,然后需要先獲取輸入框所在的父窗口的句柄,然后再獲取子控件句柄
dim h0&,h1&
h0=findwindowex(0,0,classname,"abc")'其中的classname是類名,如果類名未知可以用vbnullstring替代,abc是窗體的標題
h1=findwindowex(h0,0,classname,vbnullstring)'對于搜索子控件,可以不提供類名和控件名
如果有多個輸入框的話,就需要遞歸調用findwindowex這個函數
h1=findwindowex(h0,h1,classname,vbnullstring)'直到獲取正確的句柄

向輸入框傳遞消息可以用sendmessage或者postmessage,但是具體方法要視輸入框類型而定

vb中API函數findwindow的詳細用法vb中FindWindow函數可以用來返回窗體的句柄 。
1、VB6.0中的API聲明:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
2、具體使用:
dim i as long
i=FindWindow(vbNullString,"窗體的標題")
注意:這里的vbNullString是空的,沒有任何字符,即不傳遞 。和""空字符串是不一樣的!
3、例子:
有一個標題名字是計算器的窗體或軟件,獲取這個計算器的句柄
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim i As Long
i = FindWindow(vbNullString, "計算器")
msgbox& i'顯示窗體句柄
End sub

vb里面用findwindowex查找不到東西能找到標簽控件?那么這個窗體一定不是VB寫的,VB的標簽控件是找不到的
用findwindowex必須先用findwindow查到窗體的hwnd
再用findwindowex(hwnd,0,"類名","控件標題")

易語言靜態編譯錯誤換連接器比如vc98,應該是你用到的靜態庫的問題,或者換普通編譯

易語言編譯和靜態編譯的區別

findwindowexa

文章插圖

1、庫文件和程序文件不同,編譯是把支持庫文件和程序分開來,如果給別人去用,別人卻沒安裝易語言,就要把支持庫文件帶上給那人才能用 。但是靜態編譯是把支持庫文件打包到程序里去.這樣,如果對方沒裝易語言也照樣可以正常使用和獨立編譯 。2、可執行文件的過程不同,靜態編譯是編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應動態鏈接庫(.so)中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候不依賴于動態鏈接庫 。但是編譯就是把可執行文件和支持庫一起寫出到外部,在需要的時候直接對其中一個支持庫進行搜索某一條命令 。3、編譯過程不同,通俗的說靜態編譯是將支持靜態版的支持庫靜態鏈接(需要鏈接器,一般用VC6的)到EXE中去,庫就在EXE中,用時不用釋放 。PS:支持靜態的支持庫是易公司出5.0時重新整理并發布的 。和原來的不一樣,而且通過鏈接器編譯后,也和原來的獨立編譯大大的不一樣,使靜態編譯出的EXE更像是VC的程序,只是像,并不是,
易語言怎么靜態編譯我一般遇到這種情況是剛剛運行易語言5秒以內,5秒過后就好了
不過一般不會有NB人5秒就寫好一個程序了吧,所以這不算什么問題
我有幾百套易語言源碼和模塊,歡迎大家交流,共同進步
隨時共享
這是我們易語言人自己的交流群:132157144希望大家一起進步,本人隨時解答各類疑問
還不懂得話,繼續聯系

易語言怎么靜態編譯?可以靜態編譯的易語言發給我 !已發送 注意查收~

易語言靜態編譯的問題鏈接庫不支持皮膚組建用5.X只能普通編譯了

也可以下載易語言4.14版本 用獨立編譯也可以只生成一個獨立的exe程序

能靜態編譯就靜態編譯遇到不能靜態編譯就用4.14的獨立編譯

最好不要用皮膚增加程序大小還影響程序啟動速度

要是覺得按鈕不好看 啟動窗口子程序下面代碼
XP風格(#銀色風格)

vb隱藏右下角圖標(FindwindowEx) & 向已知句柄的窗口發送按鍵消息.定義一個模塊, 內容為:
Option Explicit

Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag 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 Long

Public Declare Function FindWindowa Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Declare Function GetForegroundWindow Lib "user32" () As Long

2. 給窗口加一個按鈕, 在按鈕的click事件里寫以下內容:
Option Explicit

Private Sub Command1_Click()

Dim hwnd As Long
hwnd = GetForegroundWindow ' FindWindowa("Notepad", "新建 文本文檔.txt - 記事本")

Dim str1 As String, len1 As Long
str1 = Space(255)'定義接收字串.
GetWindowText hwnd, str1, 1024

Do While hwnd0
hwnd = GetNextWindow(hwnd, 2) '只有2才表示找下一個窗口
len1 = GetWindowText(hwnd, str1, Len(str1))
If (InStr(1, str1, "記事", 1) > 0) Then
MsgBox "你要的窗口找到了, 它是:" + str1
Exit Sub'這一句看情況修改
End If
Loop
MsgBox "很遣憾, 沒有你要找的窗口"
End Sub

3. 測試, 一定會通過..

FindWindowEx怎么獲取沒有標題的句柄針對這種沒有標題的窗體的辦法就是先枚舉所有窗體,然后通過窗體的進程ID得到窗體標題 。

按鍵精靈里已經找到句柄,如何將句柄中的確定鍵按下?找到句柄后,用GetClientRect函數,獲取窗口起始點坐標值信息,然后計算出從起始點到你確定鍵的坐標差,用movetoX+/-坐標差,Y+/-坐標差,就行了 。或者得出窗口確定鍵所在窗口內的坐標值,用后臺插件點擊也可,注意后臺插件跟主屏坐標不同

vb獲取已知句柄窗體的控件的句柄,請老師用findwindowex和enumchildwindow舉個例子,聲明,Getwindowsa是可以自定義的:
Private Declare Function Getwindowsa Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
按鈕1的代碼(command1):
Private Sub Command1_Click()
Dim windows As Long ‘windows也是自定義的
windows = Getwindowsa(vbNullString, "QQ的窗口名 。。不知道是什么,替換這個字符串") ‘賦值給windows
If windows = 0 Then ’這里是判斷找到木有
MsgBox "對不起,沒有找到窗口句柄"
Else
MsgBox "已找到窗口句柄,窗口句柄為:" & windows
End If

End Sub

vb 隱藏已知句柄的窗口 & vb FindWindowEx的用法隱藏窗口用ShowWindow 或者SetWindowPos
Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (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
用法ShowWindow a,SW_HIDE(SW_HIDE = 0)

FindWindowEx
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
hWnd1 ----------Long,在其中查找子的父窗口 。如設為零,表示使用桌面窗口(通常說的頂級窗口都被認為是桌面的子窗口,所以也會對它們進行查找)

hWnd2 ----------Long,從這個窗口后開始查找 。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子窗口 。如設為零,表示從第一個子窗口開始搜索

lpsz1 ----------String,欲搜索的類名 。零表示忽略

lpsz2 ----------String,欲搜索的類名 。零表示忽略


托盤圖標句柄不知道怎么搞

VB findwindowex 如何精確查找控件句柄用這個吧
findwinowex(me.Hwnd,0,"ListViewWndClass",vbnullstring)

VB API如何獲取窗口內控件的句柄(急急急!)Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim n As POINTAPI
Dim a As Long
Private Sub Form_Load()
Timer1.Interval = 100
Label1.Caption = "移動鼠標指針"
End Sub

Private Sub Timer1_Timer()
GetCursorPos n
a = WindowFromPoint(n.x, n.y)
If a0 Then
Dim s As String
s = String(100, Chr(0))
GetWindowText a, s, 100
Label1.Caption = "目標標題或文本: " & Trim(s)
Label2.Caption = "目標句柄為 " & a
End If
End Sub

VB FindWindowEx 怎么找出 窗體控件的句柄?如果不用鼠標獲取,可以先知道窗口的類名,用函數GetClassName,然后用FindWindow來取句柄

如何使用FindWindowEx獲取窗體內控件句柄FindWindowEx(
Parent: HWND;{子窗口的父窗口句柄}
Child: HWND;{子窗口句柄}
ClassName: PChar; {類名}
WindowName: PChar {標題}
): HWND;
比如找Form1窗體的子窗體Form2里面名為"確定"的button
FindWindowEx(Form1.Handle,Form2.Handle,'TButton','確定');
窗體的handle也可以用FindWindow去找

易語言DLL命令怎么寫呢我要弄打開文件在易語言左側的窗口中找到“dll命令”,如圖:然后在右側單擊鼠標右鍵選擇“新DLL命令”即可 。填入正確的數據就好了 。
易語言中的 “Dll命令定義表“ 怎么使用啊那是寫API的 。易語言很流行的模塊,基礎就是用的API寫的,像易語言核心支持庫的很多命令,也是用API寫的 。但是核心支持庫不可能概括所有API命令,所以就有了這個DLL命令定義表,用來擴展命令的,不至于讓易語言局限于核心支持庫的一些命令 。這個DLL命令定義表,在其他編程語言中是沒有的,但是其他編程語言使用API都是先定義后使用,全部在源碼里完成,易語言這是分開弄了個地方,好區分一些罷了 。學易語言之所以很好學,就是因為不必要使用繁瑣的API基礎命令一步步的編輯軟件,而是使用類似核心支持庫和模塊的一些命令簡化了操作的繁瑣,而這樣也局限了用戶的發揮,所以真心想從易語言入手來學編程的話,最好是把DLL命令,也就是API研究透徹,這都是基礎 。

易語言dll命令中的數據該怎么寫在易語言左側的窗口中找到“dll命令”,如圖:

然后在右側單擊鼠標右鍵選擇“新DLL命令”即可 。

填入正確的數據就好了 。

易語言定義DLL命令可以,反正DLL是你編寫的,你想命名什么都行

如何模擬按鈕的點擊事件不用hook也可以實現啊 。步驟如下: 1. 用函數FindWindow找到記事本窗口,HWND notepad=FindWindow(NULL,"記事本窗口的標題"); 2. 然后FindWindowEx找到該按鈕,HWND button=FindWindowEx(notepad,NULL,NULL,"按鈕上的文字"); 3. 用GetWindowRect得到按鈕的大小尺寸RECT rect;GetWindowRect(button,&rect); 4. 計算按鈕的中心點坐標,再用SetCursorPos把鼠標移到該中心點位置POINT center;center.x = 0.5*(rect.left+rect.right);center.y = 0.5*(rect.top+rect.bottom);SetCursorPos(center.x, center.y); 5. 用mouse_event模擬鼠標點擊事件:mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //按下鼠標左鍵mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松開鼠標左鍵

如何獲取外部程序窗口按鈕被點擊事件取到2個button的句柄 然后用API SendMessage發送 WM_LBUTTONDOWN和WM_LBUTTONUP模擬點擊

用FindWindowEx怎樣找到網頁的按鈕窗口,然后可以用SendMessage發送點擊別逗了,網頁的話老實用DOM對象訪問吧 。

怎么用C/C++,DOS 或是其他的 實現找到其他程序的“退出”按鈕,并實現點擊這個按鈕 。。HWND h = ::FindWindow(NULL,"目標窗口名");
HWND hwn = ::FindWindowEx(h,NULL,NULL,"按鈕名");
SendMessage(hwnd,BM_CLICK,NULL,NULL);
用代碼說話 先給采納

請問怎么實現模擬其他窗口內按鈕的點擊事件,請給出示例不用hook也可以實現啊 。步驟如下:
1. 用函數FindWindow找到記事本窗口,
HWND notepad=FindWindow(NULL,"記事本窗口的標題");
2. 然后FindWindowEx找到該按鈕,
HWND button=FindWindowEx(notepad,NULL,NULL,"按鈕上的文字");
3. 用GetWindowRect得到按鈕的大小尺寸
RECT rect;
GetWindowRect(button,&rect);
4. 計算按鈕的中心點坐標,再用SetCursorPos把鼠標移到該中心點位置
POINT center;
center.x = 0.5*(rect.left+rect.right);
center.y = 0.5*(rect.top+rect.bottom);
SetCursorPos(center.x, center.y);
5. 用mouse_event模擬鼠標點擊事件:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //按下鼠標左鍵
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//松開鼠標左鍵

使用FindWindowEx函數,然后出現下面問題,求高手請教把你的FindWindowEx函數聲明貼出來

FindWindowEx()函數為什么總是返回空?既然是FindWindowExW了,那就改成L"Button",這樣的形式吧 。另外確定這個button在主窗口上嗎?

c# 用 FindWindowEx 獲取子窗體時 出異常}else/*正常刪除子串的情況*/{j=i;while(S.ch[j-1+len]!='\0')/*把要刪除子串后的字符串前移len個位置*/{ S.ch[j-1]=S.ch[j-1+len];j++;}S.len=S.len-len;/*修改字符串長度*/S.ch[S.len]='\0';/*存放字符串結束標志*/

FindWindowEx查找控件問題【findwindowexa】我這里有個指向哪顯示其控件類的小工具,可以查看各種窗體或窗口的類名,要的話留下QQ我傳你