进程通信,很奇怪 大家帮忙看看这段代码

jacezhang 2010-01-28 11:38:24
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);

[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent,
IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd,
int Msg, IntPtr wParam, string lParam);
const int WM_GETTEXT = 0x000D;
const int WM_SETTEXT = 0x000C;
const int WM_CLICK = 0x00F5;


public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
int retval = 0; //增加一个返回值用来判断操作是否成功
string lpszParentClass = "SciCalc"; //整个窗口的类名
string lpszParentWindow = "计算器"; //窗口标题
string lpszClass_Submit = "Button"; //需要查找的Button的类名
string lpszName_Submit = "C"; //需要查找的Button的标题
IntPtr ParenthWnd = new IntPtr(0);
IntPtr EdithWnd = new IntPtr(0);


//查到窗体,得到整个窗体
ParenthWnd = FindWindow(lpszParentClass, lpszParentWindow);

//判断这个窗体是否有效
if (!ParenthWnd.Equals(IntPtr.Zero))
{

//得到Button这个子窗体,并触发它的Click事件
EdithWnd = FindWindowEx(ParenthWnd,
EdithWnd, lpszClass_Submit, lpszName_Submit);
if (!EdithWnd.Equals(IntPtr.Zero))
{
SendMessage(EdithWnd, WM_CLICK, (IntPtr)0, "0");
SendMessage(EdithWnd,WM_CLICK,(
retval++;
}
}


}

功能很简单,就是把windows自带的科学计算器清0

我用debug跟了,也跑到
SendMessage(EdithWnd, WM_CLICK, (IntPtr)0, "0");
SendMessage(EdithWnd,WM_CLICK,(
retval++;
问题就是计算器没清0,这是怎么一回事?

...全文
162 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 2010-02-22
  • 打赏
  • 举报
回复
引用 6 楼 jacezhang 的回复:
如果是单击这个按钮,而不用鼠标消息的话

是否可以做到?


============================

【成分】成人1日剂量为金银花3克、大青叶3克、薄荷3克、生甘草3克,共12克。
【主要功效】:抗病毒,预防流感。
【适用范围】:除个别体质极为特殊的人群,老人、儿童使用漱饮方没有禁忌,孕妇请慎饮。
【建议用量】:100~150ml/人天(1剂/人天)
【熬制方法】每剂12克加水100ml煮沸,大火煎熬10分钟后可饮用。也可泡茶饮。

如果计算器屏蔽了消息是做不到的,如果没有屏蔽是可以做到的,如果真的要实现,建议先看看Windows消息机制,
jacezhang 2010-02-01
  • 打赏
  • 举报
回复
如果是单击这个按钮,而不用鼠标消息的话

是否可以做到?


============================

【成分】成人1日剂量为金银花3克、大青叶3克、薄荷3克、生甘草3克,共12克。
【主要功效】:抗病毒,预防流感。
【适用范围】:除个别体质极为特殊的人群,老人、儿童使用漱饮方没有禁忌,孕妇请慎饮。
【建议用量】:100~150ml/人天(1剂/人天)
【熬制方法】每剂12克加水100ml煮沸,大火煎熬10分钟后可饮用。也可泡茶饮。
ztenv 2010-01-28
  • 打赏
  • 举报
回复
这样搞来搞去的意义不大,建议楼主好好学学C#的东西吧,
jacezhang 2010-01-28
  • 打赏
  • 举报
回复
SendMessage(EdithWnd,WM_CLICK,(
这一行去掉
你妹的特盗不 2010-01-28
  • 打赏
  • 举报
回复
發送鼠標單擊消息的話,需要傳坐標信息過去吧~不然鼠標點哪啊
jacezhang 2010-01-28
  • 打赏
  • 举报
回复
顶上去 求回复~
jacezhang 2010-01-28
  • 打赏
  • 举报
回复
if (!EdithWnd.Equals(IntPtr.Zero))
{
SendMessage(EdithWnd, WM_CLICK, (IntPtr)0, "0");

}


这一段有问题么? 我的系统是XP....

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧