procedure TForm1.Button1Click(Sender: TObject); var StartupInfo : TStartupInfo; ProcessInfo : TProcessInformation; begin FillChar(StartupInfo, SizeOf(TStartupInfo), 0); CreateProcess(nil, 'c:\windows\Notepad.exe c:\program Files\Borland\delphi 2.0\Readme.txt', nil, nil,False, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo,ProcessInfo) end;procedure TForm1.Button2Click(Sender: TObject); const dest ='Readme.txt - Notepad'; //自己修改 var Stat: Word; wnd: HWND; menu, smenu: HMENU; menuid: Word; capt: array[0..255] of char; begin wnd := GetWindow(GetDesktopWindow, GW_Child); while wnd > 0 do begin if IsWindowVisible(wnd) then begin if GetWindowText(wnd, capt, sizeof(capt)) > 0 then begin if StrComp(dest, capt) = 0 then begin { menuid を取得} menu := GetMenu(wnd); smenu := GetSubMenu(menu, 2); menuid := GetMenuItemID(smenu, 0); SendMessage(wnd,WM_COMMAND,menuid, 1); break; end; end; end; wnd := GetWindow(wnd, GW_HWNDNEXT); end; end;
一樣的作用 Function SelectMenu(winname,item,subitem:string):boolean; var winhandle,menuhandle,submenuhandle,i,j,res:integer; itemname,subitemname:pchar; begin res:=-1; winhandle:=FindWindow(nil,pchar(winname)); menuhandle:=getmenu(winhandle); getmem(itemname,255); getmem(subitemname,255); for i:=0 to getmenuitemcount(menuhandle)-1 do begin getmenustring(menuhandle,i,itemname,255,MF_BYPOSITION); if string(itemname)=item then begin submenuhandle:=getsubmenu(menuhandle,i); for j:=0 to getmenuitemcount(submenuhandle)-1 do begin getmenustring(submenuhandle,j,subitemname,255,MF_BYPOSITION); if string(subitemname)=subitem then res:=SendMessage(winhandle,WM_COMMAND,makelong(getmenuitemid(submenuhandle,j),0 ),0); end; end; end; freemem(itemname); freemem(subitemname); if res=0 then result:=true else result:=false; end;
SendMessage(Handle,WM_COMMAND,mnuAbout.Command,0);
var
StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
CreateProcess(nil, 'c:\windows\Notepad.exe c:\program Files\Borland\delphi 2.0\Readme.txt',
nil, nil,False, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo,ProcessInfo)
end;procedure TForm1.Button2Click(Sender: TObject);
const
dest ='Readme.txt - Notepad'; //自己修改
var
Stat: Word;
wnd: HWND;
menu,
smenu: HMENU;
menuid: Word;
capt: array[0..255] of char;
begin
wnd := GetWindow(GetDesktopWindow, GW_Child);
while wnd > 0 do begin
if IsWindowVisible(wnd) then begin
if GetWindowText(wnd, capt, sizeof(capt)) > 0 then begin
if StrComp(dest, capt) = 0 then begin
{ menuid を取得}
menu := GetMenu(wnd);
smenu := GetSubMenu(menu, 2);
menuid := GetMenuItemID(smenu, 0);
SendMessage(wnd,WM_COMMAND,menuid, 1);
break;
end;
end;
end;
wnd := GetWindow(wnd, GW_HWNDNEXT);
end;
end;
Function SelectMenu(winname,item,subitem:string):boolean;
var winhandle,menuhandle,submenuhandle,i,j,res:integer;
itemname,subitemname:pchar;
begin
res:=-1;
winhandle:=FindWindow(nil,pchar(winname));
menuhandle:=getmenu(winhandle);
getmem(itemname,255);
getmem(subitemname,255);
for i:=0 to getmenuitemcount(menuhandle)-1 do
begin
getmenustring(menuhandle,i,itemname,255,MF_BYPOSITION);
if string(itemname)=item then begin
submenuhandle:=getsubmenu(menuhandle,i);
for j:=0 to getmenuitemcount(submenuhandle)-1 do
begin
getmenustring(submenuhandle,j,subitemname,255,MF_BYPOSITION);
if string(subitemname)=subitem then
res:=SendMessage(winhandle,WM_COMMAND,makelong(getmenuitemid(submenuhandle,j),0
),0);
end;
end;
end;
freemem(itemname);
freemem(subitemname);
if res=0 then result:=true else result:=false;
end;