社区
Windows SDK/API
帖子详情
一个很奇怪的问题,在Delphi里编译可运行的程序不能直接用EXE运行
talkfalse
2004-10-20 09:57:27
具体情况为:
程序中有2个函数:SendMessage()和keybd_event(),将消息和键盘事件传给1个窗口.在delphi里编译运行没有任何问题,事件都传过去了.
不关闭,注意是不关闭delphi,直接点击编译好的exe文件,这2个事件都没有任何反应.不知道是什么原因.
整个过程中:环境没有改变,还是在本机,delphi也没有关闭.唯一的区别就是一个是delphi编译执行的,一个是直接运行exe
...全文
243
20
打赏
收藏
一个很奇怪的问题,在Delphi里编译可运行的程序不能直接用EXE运行
具体情况为: 程序中有2个函数:SendMessage()和keybd_event(),将消息和键盘事件传给1个窗口.在delphi里编译运行没有任何问题,事件都传过去了. 不关闭,注意是不关闭delphi,直接点击编译好的exe文件,这2个事件都没有任何反应.不知道是什么原因. 整个过程中:环境没有改变,还是在本机,delphi也没有关闭.唯一的区别就是一个是delphi编译执行的,一个是直接运行exe
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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
打赏
举报
回复
咦!~~~~是我没有描述清楚,还是没人知道啊
相关推荐
‘D:\Program‘ 不是内部或外部命令,也不是可
运行
的
程序
idea配置svn路径空格
问题
idea配置的svn路径是这个D:\Program Files\TortoiseSVN\bin\svn.
exe
提交的时候报错’D:\Program’ 不是内部或外部命令,也不是可
运行
的
程序
。 因为路径
里
Program Files中间有个空格,系统不识别。把Program Files改为progra~1也不行,
直接
就找不到
exe
了。加引号啥的也解决不了
问题
。 此时最好
直接
重新安装svn,换个路径。 还有
一个
办法 把图中方框
里
的勾去掉就好了。 ...
编译
语言和解释语言
1.
编译
型语言:
程序
源码经过
编译
过程,
直接
生成机器可执行的
程序
。例如C++经过
编译
链接生成的.
exe
(二进制代码),生成的可执行
程序
可以
直接
在计算机上
运行
。 C/C++、Pascal/ObjectPascal(
Delphi
)、VB等基本都可视为
编译
语言 解释型语言:
程序
在
运行
的时候才翻译成机器语言。
程序
运行
中包含“解释“过程的都是解释型语言。只要不是"
直接
编译
成机器指令并
直接
运行
机器
java打包生成双击即可
运行
的.jar
程序
(安装JVM的电脑)
详解jar命令打包生成双击即可
运行
的Java
程序
之前有同学问我怎样把自己的
程序
做得像Windows下的.
exe
文件那样
直接
双击就可
运行
,因为大家都厌烦了Java在控制台下的“javac”再“java”的操作方法。现在我就拿出当时给班
里
的同学写的实验指导来实现一下吧。大家互相学习。 平时我们写了Java
程序
,每次都要在命令行提示符的控制台下进行
编译
、
运行
,而且只是在本机上进行的。如果我们...
Visual Studio 2015_Bug “.
exe
不是内部或外部命令,也不是可
运行
的
程序
或批处理文件” 解决办法
今天在帮助小伙伴解决项目
问题
的时候遇到了
一个
之前自己就遇到过的
问题
,“Visual Studio 2015
运行
项目时提示:.
exe
不是内部或外部命令,也不是可
运行
程序
或批处理文件”: 但我忘记了解决方法,在网上搜索了半天,诸如以下的解决办法都不管用: (1)添加系统变量(即,将该
exe
文件所在目录添加到系统Path中) (2)更换为release或者debug模式重新
编译
运行
(3)在项目属性中...
编译
QT5.0.1的错误“qtbase\\configure.
exe
' 不是内部或外部命令,也不是可
运行
的
程序
或批处理文件”的解决方法
用configure配置QT5.0.1时出现
一个
错误:“qtbase\\configure.
exe
' 不是内部或外部命令,也不是可
运行
的
程序
或批处理文件”。 原因是
直接
下的代码,并不是用git
里
clone出来的。 解决办法是在qtbase创建
一个
.gitignore文件,
里
面内容为foo。 如在qt-everywhere-opensource-src-5.0.1目录下,可以
运行
命令:“ech
发帖
Windows SDK/API
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
1177
社区成员
2.2w+
社区内容
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2004-10-20 09:57
社区公告
暂无公告