一个很奇怪的问题,在Delphi里编译可运行的程序不能直接用EXE运行

talkfalse 2004-10-20 09:57:27
具体情况为:
程序中有2个函数:SendMessage()和keybd_event(),将消息和键盘事件传给1个窗口.在delphi里编译运行没有任何问题,事件都传过去了.
不关闭,注意是不关闭delphi,直接点击编译好的exe文件,这2个事件都没有任何反应.不知道是什么原因.
整个过程中:环境没有改变,还是在本机,delphi也没有关闭.唯一的区别就是一个是delphi编译执行的,一个是直接运行exe
...全文
242 20 打赏 收藏 举报
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
talkfalse 2004-10-25
  • 打赏
  • 举报
回复
怎么做才能让记事本窗口设为最前窗口
SendMessage(hw, WM_SYSCOMMAND, SC_HOTKEY, hw); //编译运行时可以将记事本设为最前窗口的
lw549 2004-10-25
  • 打赏
  • 举报
回复
哈哈,我晕了
NewStarSE 2004-10-24
  • 打赏
  • 举报
回复
SendMessage(hw, WM_SYSCOMMAND, SC_HOTKEY, hw); //这个样子并没有使记事本成为输入窗口。
//你自己的窗口才拥有输入焦点
keybd_event(Ord('A'), MapVirtualKey(Ord('A'), 0), 0, 0); //记事本当然不能响应按键


需要在发送消息之前先让所有的窗口失去输入焦点,或者将记事本窗口置为最前面的窗口。
hsmserver 2004-10-24
  • 打赏
  • 举报
回复
你用SPY查一下类名
然后再找它的句柄
好象用FindwosA得
talkfalse 2004-10-24
  • 打赏
  • 举报
回复
to hsmserver(撒哈拉之雨的悲伤)
1。怎样做才能实现这个功能?
2。为什么在delphi里编译有反应,能够发一个A过去?
talkfalse 2004-10-24
  • 打赏
  • 举报
回复
在别人的机器上编译的拿过来也不行。别人的环境是XP+delphi6。我得是win2k+delphi6
hsmserver 2004-10-24
  • 打赏
  • 举报
回复
其实什么都用不到
那样你根本得不到文件的句柄
所以一点反映都没有
智商无下限 2004-10-24
  • 打赏
  • 举报
回复
那会不会是你的DELPHI里用了什么特殊的控件?
建议关掉DELPHI,或者重新启动WINDOWS试试!
要是还不行,我也实在想不出来了!
talkfalse 2004-10-24
  • 打赏
  • 举报
回复
没有用,试过了。删除后新生成的exe还是不能发消息过去。但是在delphi里直接编译运行的就可以
智商无下限 2004-10-24
  • 打赏
  • 举报
回复
你把你的的可执行文件删除,然后重新编译一个试试!
talkfalse 2004-10-24
  • 打赏
  • 举报
回复
完成的功能仅仅是按一下按钮发一个A到打开的记事本
talkfalse 2004-10-24
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
Var
hw:thandle;
begin
hw:=FindWindow(nil,'1.txt - 记事本');
if hw = 0 then
begin
showmessage('记事本没有打开!');
Exit;
end;

SendMessage(hw, WM_SYSCOMMAND, SC_HOTKEY, hw);
keybd_event(Ord('A'), MapVirtualKey(Ord('A'), 0), 0, 0);
keybd_event(Ord('A'), MapVirtualKey(Ord('A'), 0), KEYEVENTF_KEYUP,0);
end;
nicotine 2004-10-22
  • 打赏
  • 举报
回复
问题可能出在SendMessage上,你的pchar是怎么用的,是pchar(string)还是定义pchar再用getmem还是chr:Array[0..255] Of char等等
换其它的方式试试,或不用getmem而用AllocMem
以前碰到的一个问题有点像你的
masterjames 2004-10-21
  • 打赏
  • 举报
回复
贴出代码
ahuige 2004-10-21
  • 打赏
  • 举报
回复
有两点没说清楚,不关闭delphi,但是工程关闭没有.工程在运行没有?
ctrlqrj 2004-10-21
  • 打赏
  • 举报
回复
看来还是要贴出代码才行
快乐老猫 2004-10-21
  • 打赏
  • 举报
回复
窗口是否找对了?
用个LISTBOX把一些信息显示出来,分析那里出了问题。
talkfalse 2004-10-20
  • 打赏
  • 举报
回复
但是确实就遇到了,我怎么都想不明白
ly_liuyang 2004-10-20
  • 打赏
  • 举报
回复
不会吧
真是没有遇到哦

http://lysoft.7u7.net
talkfalse 2004-10-20
  • 打赏
  • 举报
回复
咦!~~~~是我没有描述清楚,还是没人知道啊
相关推荐
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2004-10-20 09:57
社区公告
暂无公告