-
自己測試一下:
option explicit
private declare function getwindowtext lib "user32" alias "getwindowtexta" (byval hwnd as long, byval lpstring as string, byval cch as long) as long
private declare function findwindow lib "user32" alias "findwindowa" (byval lpclassname as string, byval lpwindowname as string) as long
dim myhwnd as long, title as string
private sub command1_click()
myhwnd = findwindow(vbnullstring, title)
if myhwnd = 0 then
msgbox "首先開啟檔案:" & title
exit sub
end if
print title, myhwnd
end sub
private sub command2_click()
dim s as string, pid
s = space(256)
if myhwnd > 0 then
getwindowtext myhwnd, s, len(s)
print myhwnd, s
elsemsgbox "首先獲取流程"
end if
end sub
private sub form_load()
title = "-記事本"
end sub
-
private declare function enumwindows lib "" (byval lpenumfunc as long, byval lparam as long) as long
首先列舉所有視窗。
然後私有宣告函式 enumwindows lib"" (byval lpenumfunc as long, byval lparam as long) as long
private declare function getwindowthreadprocessid lib "" (byval hwnd as long, byref lpdwprocessid as long) as long
確定視窗所屬的程序。
生成集合。
最後,可以通過索引顯示它。
-
直接使用 findwindow(0,"視窗標題"你可以得到視窗控制代碼,你不需要通過winmgmts,那個東西不好用,服務停止,它不起作用,findwindow是乙個api,你可以在任何情況下使用它。
-
使用 api 獲取,getWindowThreadProcessId ihwnd,pid 獲取程序 ID
獲取程序控制代碼示例:
-
已知的程序名稱或 PID,則無法準確定位表單控制代碼。
這是因為:一旦程式啟動,系統只會為其分配乙個 PID,而乙個程式通常有多個視窗。 因此,如果想從PID向後找到相應的視窗,它並不是唯一的,並且已經在實踐中得到了證明,而這方面的研究只能導致死胡同。
此問題的解決方案是列舉所有視窗控制代碼,然後獲取相應的程序名稱或 pid,如果它符合您的條件,則可以執行此操作。
-
這個問題寫得含糊不清。 API 獲取具有指定名稱的視窗的控制代碼:declare function findwindow lib"user32" alias "findwindowa"(byval lpclassname as string, byval lpwindowname as string) 作為 long***api 使指定控制代碼的視窗聚焦:
declare function setforegroundwindow lib "user32"(byval hwnd 只要)只要***具體用法可以查閱msdn,不知道我是否理解。
-
這部分只能在模組中使用。
否則,系統將無法獲取正確的位址。
-
人才! 我花了兩個月的時間來嘗試 API 函式
private declare function findwindows lib "user32" alias "findwindowa" (byval lpclassname as string, byval lpwindowname as string) as long >>>More
下面是乙個 VB6 程式的示例,就足夠了:
程式執行後,會彈出兩個輸入框,要求使用者分別輸入整數 a 和 b。 然後,根據輸入的 A 和 B 值,分別判斷它們。 >>>More