歹勢~先輩借問一下!
我想執行其他應用程式的功能表的指令,但是卻不知如何執行,以下是我到處尋找資料,而寫的程式碼,請先輩指正!謝謝~
Dim hWndRecv As Long
Dim hMenu As Long
Dim hSubMenu As Long
Dim MenuID As Long
hWndRecv = FindWindow("WinGISMainWindow", vbNullString)
hMenu = GetMenu(hWndRecv)
hSubMenu = GetSubMenu(hMenu, 4)
MenuID = GetMenuItemID(hSubMenu, 2)
MsgBox SendMessage(hWndRecv, WM_COMMAND, MenuID, 0)
我想執行其他應用程式的功能表的指令,但是卻不知如何執行,以下是我到處尋找資料,而寫的程式碼,請先輩指正!謝謝~
Dim hWndRecv As Long
Dim hMenu As Long
Dim hSubMenu As Long
Dim MenuID As Long
hWndRecv = FindWindow("WinGISMainWindow", vbNullString)
hMenu = GetMenu(hWndRecv)
hSubMenu = GetSubMenu(hMenu, 4)
MenuID = GetMenuItemID(hSubMenu, 2)
MsgBox SendMessage(hWndRecv, WM_COMMAND, MenuID, 0)
文章標籤
全站熱搜

只要: 1:把用到API宣告加上 2:WM_COMMAND常數為&h111 3:"WinGISMainWindow"改為你要指定的程式的calssname
感謝先輩的指教,只是SendMessage的回應仍為0.以下是我修正程式碼,請指教.謝謝~ Public Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long Public Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long Public Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long 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 Const WM_COMMAND = &H111 Dim hWndRecv As Long Dim hMenu As Long Dim hSubMenu As Long Dim MenuID As Long hWndRecv = FindWindow("WinGISMainWindow", vbNullString) hMenu = GetMenu(hWndRecv) hSubMenu = GetSubMenu(hMenu, 4) MenuID = GetMenuItemID(hSubMenu, 2) MsgBox SendMessage(hWndRecv, WM_COMMAND, MenuID, 0) PS:MenuID抓取成功,得7001.但是SendMessage無法執行該功能表指令.
感謝先輩的指教,我經由測試.發覺程式碼似乎沒問題.使用在視窗標籤的功能表,如還原'最小化'最大化'關閉 指令皆可.但是用於檔案'編輯的功能表指令就不可.這是應用程式本身限制嗎?
發覺MDI表單無法接受該程式碼,但是SDI卻可以.
>>發覺MDI表單無法接受該程式碼,但是SDI卻可以. 偶試仍可以!檢查你的calssname有沒有設對!而SendMessage回應0卻有執行!
謝謝~