FindWindow与SendMessage传送消息
2010-11-30 23:01
344 查看
最近自己在写个工具,功能是启动一个*.lnk连接,给该连接传送一个消息,然后执行,比如执行"Cd \"命令。因为ps.StandardInput.Write 不能将命令传送给*.lnk连接,所以考虑到适用API函数来完成这个功能。关于FindWindow与SendMessage的方法详细签名,可以在google中查询,再次不在赘述。实现该功能主要一个问题在于调用SendMessage方法时 wMsg 的分类,可以网上查到,因为当前是将一个字符串要传送到*.lnk连接,所以 wMsg 应该设为0x102。
下面是代码的详细部分,已经过测试,可以正常使用。对API函数不是很熟,希望大家不吝赐教。
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
int WM_CHAR = 0x102;
using (Process ps = new Process())
{
ps.StartInfo.FileName = "cmd.lnk"
ps.Start();
System.Threading.Thread.Sleep(10000);
IntPtr cur= FindWindow("ConsoleWindowClass",@"C:\WINDOWS\system32\cmd.exe"); //找窗体
byte[] chars = (new System.Text.ASCIIEncoding()).GetBytes(@"Cd \"); //要写的信息
for (int i = 0; i < chars.Length; i++)
{
SendMessage(cur, WM_CHAR, (int)chars[i], 0); //以字符发送
}
SendMessage(cur, WM_CHAR, 13, 0); //发送回车执行代码
}
附件:http://down.51cto.com/data/2357218
下面是代码的详细部分,已经过测试,可以正常使用。对API函数不是很熟,希望大家不吝赐教。
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
int WM_CHAR = 0x102;
using (Process ps = new Process())
{
ps.StartInfo.FileName = "cmd.lnk"
ps.Start();
System.Threading.Thread.Sleep(10000);
IntPtr cur= FindWindow("ConsoleWindowClass",@"C:\WINDOWS\system32\cmd.exe"); //找窗体
byte[] chars = (new System.Text.ASCIIEncoding()).GetBytes(@"Cd \"); //要写的信息
for (int i = 0; i < chars.Length; i++)
{
SendMessage(cur, WM_CHAR, (int)chars[i], 0); //以字符发送
}
SendMessage(cur, WM_CHAR, 13, 0); //发送回车执行代码
}
附件:http://down.51cto.com/data/2357218
相关文章推荐
- MFC 关于SendMessage 消息参数 传送字符串,结构体
- MFC 关于SendMessage 消息参数 传送字符串,结构体
- vb利用FindWindow,GetWindowText,SendMessage查找程序并发送最小化消息
- vb利用FindWindow,GetWindowText,SendMessage查找程序并发送最小化消息
- MFC 关于SendMessage 消息参数 传送字符串,结构体
- 如何正确使用SendMessage进行发送消息
- JMS和ActiveMQ介绍(1)_消息传送机制
- PB发送和接收消息send SendMessage
- VC两对话框类之间消息传送数据
- (Android消息) handler.sendMessage
- 用户自定义消息SendMessage的使用
- SendMessage()发送自定义消息在release版下可能崩溃的原因
- 利用SendMessage 发送消息到当前机子的另一个程序
- MFC SendMessage或PostMessage发送自定义消息
- SendMessage和PostMessage及Windows消息机制简介
- 看魔乐科技消息传送笔记
- 手工出发MFC的消息 SendMessage PostMessage ::SendNotifyMessage
- MFC使用SendMessage()发送自定义消息实现进程间通信
- Win32消息处理API---SendMessage
- MFC各个控件之间运用SendMessage()传送CString和char[]字符串,以及int类型数据