c#winform中,我写的一个程序在运行时,系统会弹出一个对话框,问我是直接打开,还是保存,还是取消,我希望能通过代码选择打开,所以我用SendMessage和PostMessage往对话框传值,可是按网上的一些人的做法,始终没有任何反应,打开的快捷键是 O。sendkegs也不行,在win8中会卡住,而且必须前台。怎么办?给点代码或实际例子。
问题是对话框不是我写的,是系统弹得
SendMessage和PostMessage的用法
答案:3 悬赏:40 手机版
解决时间 2021-03-20 16:56
- 提问者网友:我们很暧昧
- 2021-03-20 10:51
最佳答案
- 五星知识达人网友:逃夭
- 2021-03-20 12:09
先用FindWindowEx找到对话框中按钮的句柄,在用SendMessage
全部回答
- 1楼网友:青灯有味
- 2021-03-20 13:56
sendmessage : 发送一个消息给操作系统,并且等待操作系统执行完这个消息。
postmessage : 发送一个消息给操作系统,不等待操作系统执行完这个消息就立即返回执行下一条语句。
sendmessage 定义:
public shared sub sendmessage ( _ byref m as message _ )sendmessage 调用:
dim m as message
messagewindow.sendmessage(m)
postmessage 定义:
public shared sub postmessage ( _ byref m as message _ )postmessage 调用:
dim m as message
messagewindow.postmessage(m)
它们的定义和调用格式是一样的,只是执行时的效果不一样,刚才我已经说过了。
参数的m含义:
是一个windows的消息结构体,用来描述传递的消息。
比如:
dim msg as microsoft.windowsce.forms.message = _ microsoft.windowsce.forms.message.create(msgwin.hwnd, _ msgwindow.wm_custommsg, new intptr(e.x), new intptr(e.y)) messagewindow.sendmessage(msg) msgwin.hwnd :表示消息的句柄。msgwindow.wm_custommsg :表示消息的id,就是一个唯一的消息的标识号,是一个整数。intptr(e.x) 和 new intptr(e.y) : 消息的两个附加参数,这要根据具体的消息而论了。- 2楼网友:一袍清酒付
- 2021-03-20 13:41
if (MessageBox.Show("您确定要还原数据库备份: " + openFileDialog1.FileName + "吗?", "重要操作",
MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)
{}
else
{}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯