右键点任务栏上的delphi程序,弹出的菜单为什么只有3项?(50分)

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

gy1969

Unregistered / Unconfirmed
GUEST, unregistred user!
右键点任务栏上的delphi程序,弹出的菜单只有3项(delphi IDE也如此)<br>能解决吗?
 
这是Delphi本身的问题,如果你察看一下TForm得源程序,你就会发现他把另外两项屏蔽掉<br>了,这个它到现在还没有解决!
 
有没有什么变通的方法
 
呵呵,很多人就是根据这一点来判断程序是否由Delphi/C++Builder编的。<br>至于变通的方法我也想知道
 
可不可以得到那个菜单的句柄,修改它
 
可以!!!!<br>修改任务栏的菜单<br>Application本身也是一个窗口(就是哪个按钮呀)。如下就不一样了。<br>InsertMenu(GetSystemMenu(Application.Handle, False), 0, MF_BYPOSITION + MF_STRING, 0, 'test'); <br>在TApplication.CreateHandle中有如下代码:<br>&nbsp; SysMenu := GetSystemMenu(FHandle, False);<br>&nbsp; DeleteMenu(SysMenu, SC_MAXIMIZE, MF_BYCOMMAND);<br>&nbsp; DeleteMenu(SysMenu, SC_SIZE, MF_BYCOMMAND);<br>&nbsp; if NewStyleControls then DeleteMenu(SysMenu, SC_MOVE, MF_BYCOMMAND);<br>去掉就可以了<br><br>选择菜单Project-&gt;Options。在Packages页中关闭Build with runtime packages 选项(即不选中); <br>并在Dicectorise/Conditionals页中Search path中添加一项[$DELPHI]/Source/VCL。<br>&nbsp; <br>&nbsp; 将DelphiX/Lib目录下的Forms.dcu改名为OriginForms.dcu。<br><br>&nbsp; 打开DelphiX/Source/VCL目录下的Forms.pas屏蔽掉TApplication.CreateHandle中如下代码:<br>&nbsp; SysMenu := GetSystemMenu(FHandle, False);<br>&nbsp; DeleteMenu(SysMenu, SC_MAXIMIZE, MF_BYCOMMAND);<br>&nbsp; DeleteMenu(SysMenu, SC_SIZE, MF_BYCOMMAND);<br>&nbsp; if NewStyleControls then DeleteMenu(SysMenu, SC_MOVE, MF_BYCOMMAND);<br><br>&nbsp; 选择菜单Project-&gt;Build 你的工程即可(请先保存工程,因为有时Build后会兰屏,<br>主要是因为装了一些构件。重运行Delphi即可)。 <br><br>&nbsp; 最后,选择菜单Project-&gt;Options。去掉刚才在Dicectorise/Conditionals页中Search path中添加的[$DELPHI]/Source/VCL这一项。<br>&nbsp; 将DelphiX/Source/VCL目录下的Forms.dcu 复制到DelphiX/Lib目录。再删除DelphiX/Source/VCL目录下其它无用了的*.dcu文件。 <br>在Application中的WndProc中没有对这3个消息(SC_SIZE、SC_MOVE、SI_MAXIMIZE)的处理。而且,Application也只有Minimize和Restore这两个功能函数。<br>我想这是由于Delphi的普通应用的风格决定的。一般其它窗口不包含在主窗口之中(即使是MDI程序,非子窗口也是这样),因此,<br>对于应用的最大、移动的操作在逻辑上存在矛盾,所以Borland将这3个应用上的菜单项删除了。
 
上面是BCB说的,我只不过Copy了一下。
 
其实这个问题倒也无妨,只是想知道个究竟,多谢各位了<br>我想也许borland是故意能让别人知道程序是用delphi写的<br>
 
后退
顶部