api 控制其他程序的菜单(100分)

  • 主题发起人 主题发起人 gwboy
  • 开始时间 开始时间
G

gwboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我怎么用API 来 控制另一个程序中的菜单 &nbsp;(比如激活所有的菜单条)<br>搞了我几天 没有搞定 烦死了 请高手帮我搞定 &nbsp;要源码 把下面附件中菜单全部激活 <br>附带API控制另一个程序中的按键的源码 已经搞定<br>unit Unit1;<br><br>interface<br><br>uses<br>&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br>&nbsp; Dialogs, StdCtrls;<br><br>type<br>&nbsp; TForm1 = class(TForm)<br>&nbsp; &nbsp; Button1: TButton;<br>&nbsp; &nbsp; Button2: TButton;<br>&nbsp; &nbsp; procedure Button1Click(Sender: TObject);<br>&nbsp; &nbsp; procedure Button2Click(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br>var a,aa,aaa,aaaa:hwnd;<br><br>{$R *.dfm}<br>function gogo(b:hwnd;c:pointer):boolean;stdcall;<br>begin<br>EnableWindow(b, TRUE);<br>Result:=True;<br>end;<br><br>function findfind(d:hwnd;e:pointer):boolean;stdcall;<br>begin<br>EnumChildWindows(d, @gogo, 0);<br>Result:=True;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp;EnumWindows(@findfind,0);<br>end;<br><br>end.<br><br><br>
 
如果只是普通的菜单,可以用API: EnableMenuItem等来实现,但是对于象关联了ACTION<br>的DELPHI程序,这个API对它基本是无效的,因为ACTION在Update的时候会把MENU又设为DISABLE。
 
具体点源码呢??我知道用 enablemenuitem &nbsp; &nbsp; getmenu &nbsp; getsubmenu 等等<br>但是我搞了好久 就硬是没有把它搞定 麻烦你先试下 给我具体的源码
 
具体参数msdn里有的,兄弟<br>要相关代码的话<br>查一下大富翁的旧贴<br>我就不重贴了
 
EnableMenuItem(GetSystemMenu(Application.Handle,false),SC_CLOSE,MF_BYCOMMAND or MF_GRAYED);<br>其中第一个但书是hmenu,菜单句柄,第一个参数是哪个菜单项,具体看msdn<br>BOOL EnableMenuItem(<br>&nbsp; HMENU hMenu, &nbsp; &nbsp; &nbsp; &nbsp; // handle to menu<br>&nbsp; UINT uIDEnableItem, &nbsp;// menu item to enable, disable, or gray<br>&nbsp; UINT uEnable &nbsp; &nbsp; &nbsp; &nbsp; // menu item flags<br>);<br><br><br>var<br>&nbsp; &nbsp;h,m,s,s1:hwnd;<br>begin<br>&nbsp; h:=FindWindow('ExploreWClass',nil);<br>&nbsp; &nbsp;if h&lt;&gt;0 then<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;m:=GetMenu(h);<br>&nbsp; &nbsp; &nbsp;s:=GetSubMenu(m,1);<br>&nbsp; &nbsp; &nbsp;s1:=GetSubMenu(s,7);<br>&nbsp; &nbsp; &nbsp;SendMessage(h,WM_COMMAND,MakeLong(GetMenuItemId(s,7),0),s1);<br>&nbsp; end;<br>end; <br><br><br>
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2258917<br><br>激活就是这个意思吧:<br>EnableMenuItem(iHandle,PMenuItemInfo(PHandleInfo(tv.Selected.Data).HandleInfo).iCommand,MF_BYCOMMAND or MF_ENABLED);
 
具体的源码呢??激活就是 试灰显的 不灰显 可以用<br>最终是要用 enablemenuitem 但是一套找 和 解决的 怎么用呢<br>能不能象我激活其他程序的按键那样写一个完整的出来????<br>感谢万分了 。。。。。。
 
看来你是想搞个菜单突破专家吧
 
呵呵 &nbsp;正是这个想法 看到了 按键突破专家 就自己做了一个 可行<br>但做这个菜单的时候 就不好搞了 &nbsp;搞了几天头都大了 还是没有搞定<br>帮忙做一下
 
楼主,试试下面的代码看看,呵呵!!!!!有问题再贴出来哦!!!!<br>var<br>&nbsp; HSysMenu: LongInt;<br>begin<br>HSysMenu:= GetSystemMenu(Handle, False); <br>AppendMenu(HSysMenu, MF_String or MF_UnChecked, WM_TopWindow, '窗体置前'); //这里的WM_TopWindow为接收时的消息,可设为一个任意常数啦<br>end;
 
要的不是系统菜单啦 &nbsp;是普通的下拉菜单<br>上面的代码没有一个可以解决问题的
 
你肯定想破解别人的程序,把未注册的程序编程跟注册一样。<br>这可不好办,没干过!
 
是学习API哦 破什么别人的程序哦 我的程序 是直接控制按键中的代码<br>不会笨到 只用控制按键可不可以用而以 你说呢?
 

Similar threads

I
回复
0
查看
570
import
I
I
回复
0
查看
714
import
I
I
回复
0
查看
759
import
I
后退
顶部