如何使用sendmessage向dbgrid发送数据(100分)

  • 主题发起人 主题发起人 whanning
  • 开始时间 开始时间
W

whanning

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使用sendmessage向dbgrid发送数据,或者修改内容?<br>请大家帮忙。
 
为和不用sql修改dbgrid的内容?兄弟可以详细点吗?
 
你好,就是用我自己做的软件控制另一个软件中的输入界面,那个界面有一部分是DBGrid做的,如何把我的数据传递过去,在dbgrid中显示。谢谢!
 
那个输入界面中的信息是空的,DBGrid是可编辑状态。
 
向ComboBox发送可以,向Edit也可以,就是不知道怎么向Dbgrid发送,大家忙帮!
 
高手快来帮我呀,好着急!小妹提前谢谢大家了,明天必须完成的,我现在就差这个问题了。
 
Dbgrid里的cell又不是控件,没有句柄,你只能找到DBGrid,再定位它的 CELL
 
如何定位呢?我查了资料,测试了一下代码<br>with MyMessage do<br> &nbsp;begin<br> &nbsp; &nbsp; &nbsp;lParamLo :=100;<br> &nbsp; &nbsp; &nbsp;lParamHi :=20; <br> &nbsp;end;<br>sendmessage(hWndTemp,WM_LBUTTONDOWN,0,MyMessage.LParam); <br>sendmessage(hWndTemp,WM_LBUTTONUP,0,MyMessage.LParam);<br>对Delphi的DBGrid有效,但是对有的不管用。<br>是不是定位cell以后可以模拟键盘发送信息?<br>但是,我测试的结果是,有时候可以,有时候不可以。<br>我要控制的那个程序不知道是用什么写的。能给我说具体一点吗?谢谢
 
小mm,我也只是有点想法,但具体写法上无能为力,只能帮顶一下.抱歉.
 
那你知道为什么我模拟键盘Ctrl+V, 有时候可以,现在就不可以了,为什么吗?<br>keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);<br>keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);<br>keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);<br>keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP,0);
 
以下是我找到的方法,发送ctrl+a的,希望对你有帮助:<br>var <br> hwnd:thandle; <br>begin <br> hwnd:=findwindow(nil,'窗口标题');//如果知道类就用类名 <br> if hwnd&lt;&gt;0 then //找到窗口 <br> begin <br> &nbsp; setforegroundwindow(hwnd); //这句好象很关键<br> &nbsp; //按下 <br> &nbsp; keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0); <br> &nbsp; keybd_event(ord('A'), MapVirtualKey(ord('A'), 0), 0, 0); <br> &nbsp;//释放 <br> &nbsp; keybd_event(ord('A'), MapVirtualKey(ord('A'), 0), KEYEVENTF_KEYUP, 0); <br> &nbsp; keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0); <br> end; <br>end;
 
我试了还是不行。不知道是什么原因,昨天上午还可以的,我也没有修改程序,下午就不可以了。郁闷!
 
你有没有大富翁离线资料库?在里面查查,有很多相关的资料的.
 
好像有。在模拟键盘之前,dbgrid的cell是编辑状态,一模拟键盘就不可编辑了。但不知道为什么。谢谢你了babibean
 
抱歉没帮上忙,希望顶一顶,让高手能看到这个帖子.
 
提供一个思路:<br>1:用hook技术将你的dll嵌入到要dbgrid程序中<br>2:再找到dbgrid实例,在自己的dll中恢复这个实例<br>3:发送消息给dll,由dll来处理你要添加的数据,操作以来就向操作自己倥件一样方便。(为发送消息方便,在dll中创建一个隐形窗口来接收消息)
 
能不能说清楚点,怎么嵌入到别的程序中?那个程序不知道用什么做的,而且还有个控制器,不连接那个控制器就打不开界面。
 
你现在不是要将数据填到dbgrid中吗?<br>用SetWindowsHookEx将你自己写的dll嵌入到你要操作的dbgrid程序进程中。至于那个程序用什么做的,你可以找个软件分析一下
 
谢谢NoName,我现在也可以向dbgrid里写数据(keybd_event),也可以定位每一个cell,但是就是模拟Ctrl+V现在不能用了,昨天还可以。你知道这是为什么吗?
 
现在可以了,谢谢babibean和NoName的帮助。等我完成了演示,再仔细学习一下hook。上边的问题可能与消息队列有关,还没有来得及研究。
 
后退
顶部