FindWindow与SendMessage传送消息

简介:

 最近自己在写个工具,功能是启动一个*.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);                //发送回车执行代码

        }


本文转自lidup 51CTO博客,原文链接:http://blog.51cto.com/lidup/437943,如需转载请自行联系原作者


相关文章
|
消息中间件 网络协议
RabbiMQ中的消息回调与消息确认
和生产者的消息确认机制不同,因为消息接收本来就是在监听消息,符合条件的消息就会消费下来。 所以,消息接收的确认机制主要存在三种模式 1.自动确认 这也是默认的消息确认情况。AcknowledgeMode.NONE,RabbitMQ成功将消息发出(即将消息成功写入TCP Socket)中立即 认为本次投递已经被正确处理,不管消费者端是否成功处理本次投递 当自动应答等于true的时候,表示当消费者一收到消息就表示消费者收到了消息,消费者收到了消息就会立即从队列中删除 2.不确认(不介绍) 3.手动确认(多数选择的模式) 消费者收
|
消息中间件 Java 数据库
消息的和发送和接收|学习笔记
快速学习消息的和发送和接收
105 0
|
消息中间件 物联网 Linux
Msgrcv 接收消息|学习笔记
快速学习 Msgrcv 接收消息
263 0
Msgrcv 接收消息|学习笔记
|
消息中间件 RocketMQ 开发者
发送同步消息|学习笔记
快速学习发送同步消息
75 0
发送同步消息|学习笔记
|
消息中间件 RocketMQ 开发者
发送单向消息|学习笔记
快速学习发送单向消息
61 0
|
移动开发 网络协议 测试技术
服务器接收客户端消息|学习笔记
快速学习服务器接收客户端消息
132 0
udp发送广播消息
import socket if __name__ == '__main__': # 创建udpsocket udp_socket = socket.socket(socket.AF_INET, socket.
1444 0
|
数据安全/隐私保护