有什么办法可以得到另外一个窗体RichEdit或者其他文本编辑框中的文字啊(50分)

  • 主题发起人 dawndang
  • 开始时间
D

dawndang

Unregistered / Unconfirmed
GUEST, unregistred user!
我用GetwindowText好象对Edit之类的控件没有用阿。。。。。<br><br>谢谢了
 
L

lio_cheng

Unregistered / Unconfirmed
GUEST, unregistred user!
很简单的问题干吗搞的这么复杂:<br>&nbsp; &nbsp; &nbsp;edit1.Text:=form2.edit1.Text;
 
D

dawndang

Unregistered / Unconfirmed
GUEST, unregistred user!
不是自己程序的阿:)呵呵,我正在尝试发送消息给另外一个程序
 
L

lio_cheng

Unregistered / Unconfirmed
GUEST, unregistred user!
什么意思,是用自己的程序来的到其他程序的窗体的文本框中的内容吗?
 
T

timelyraining

Unregistered / Unconfirmed
GUEST, unregistred user!
请考虑用使用clipboard<br><br>
 
D

dawndang

Unregistered / Unconfirmed
GUEST, unregistred user!
对阿,自己写一个程序,然后<br>实现功能就是拷贝和设置其他程序窗口中Edit或者文本编辑控件中<br>的文本
 
L

lio_cheng

Unregistered / Unconfirmed
GUEST, unregistred user!
哇,要是有这种程序的话,可以卖银子的!<br>再说,要是窗体上有多个文本框又怎么定位,太难了吧!
 
D

DxDx

Unregistered / Unconfirmed
GUEST, unregistred user!
關注ing~
 
J

jsxjd

Unregistered / Unconfirmed
GUEST, unregistred user!
可以做到,但你必须先获得该编辑框的 Hanldle .<br>然后向它发送 WM_GETTEXT 消息。<br>要获得 handle ,一般要用 spy winsight32 之类的程序先跟踪一下,<br>先得到它的“类”。然后编辑一个程序来得到。<br>
 
L

lio_cheng

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,高手!!!
 
I

I_Love_Delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
赞成jsxjd的说法。
 
D

dawndang

Unregistered / Unconfirmed
GUEST, unregistred user!
jsxjd, 我已经试过用Spy++追踪handle然后 使用GetWindowText 或者 WM_Copy消息,<br>但是遗憾的是都不管用,如果您能有一个示范的例程,我将无限感激。我记得原来有个<br>关于QQ的轰炸软件,实现的就是不停地往开着的QQ聊天窗口中设置文字然后发送,不知道他<br>是怎么实现的,再次谢谢<br>谢谢
 
M

movax

Unregistered / Unconfirmed
GUEST, unregistred user!
就是jsxjd的那种做法啊,检查一下得到的handle是不是你想要的.<br><br>你可以得到你想要监视窗口的所有控件的handle,用enumwindows(好象是这个名字的api函数),<br>我原来写过一个hook,可以监视其他窗口的edit.text的变化.
 
D

dawndang

Unregistered / Unconfirmed
GUEST, unregistred user!
movax<br>我在windows2000server下面 试了很多办法都不行。不知道能够给我看看您写的hook吗?
 
J

jsxjd

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是我跟踪程序的主要跟踪过程,<br>被跟踪的程序是一个数据录入程序,但它是加密保存数据的,无法自己进行分析。<br>该程序主要跟踪用户的数据录入控件,并保存自己的备份:<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>var<br>&nbsp; ss:tstringlist;<br>&nbsp; i,dow:integer;<br>&nbsp; s:string;<br>&nbsp; t:ttimestamp;<br><br>begin<br>&nbsp; datafile:='';<br>&nbsp; ss:=tstringlist.create;<br>&nbsp; ss.loadfromfile('people.txt');<br>&nbsp; for i:=1 to ss.count-1 do<br>&nbsp; &nbsp; listbox2.Items.add(ss.strings[i-1]);<br>&nbsp; ss.free;<br>&nbsp; d:=date;<br>&nbsp; dow:=dayofweek(d);<br>&nbsp; t:=datetimetotimestamp(d);<br>&nbsp; t.date:=t.date-6-dow;<br>&nbsp; d:=timestamptodatetime(t);<br>&nbsp; datetimepicker1.date:=d;<br><br>&nbsp; listbox2.itemindex:=0;<br>&nbsp; p:=GetWindow(getdesktopwindow,GW_child);<br>&nbsp; while (p&lt;&gt;0) do<br>&nbsp; begin<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetwindowText(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetClassName(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,16);<br>&nbsp; &nbsp; if s='ThunderRT6FormDC' then break;<br>&nbsp; &nbsp; p:=GetWindow(p,GW_HWNDNEXT);<br>&nbsp; end;<br><br>&nbsp; if not(s='ThunderRT6FormDC') then<br>&nbsp; begin<br>&nbsp; &nbsp; showmessage('Traced Program not run!');<br>&nbsp; &nbsp; application.terminate;<br>&nbsp; end;<br>&nbsp; pp:=p;<br>&nbsp; chd:=p;<br>&nbsp; p:=GetWindow(chd,GW_child);<br>&nbsp; while (p&lt;&gt;0) do<br>&nbsp; begin<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetwindowText(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetClassName(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,22);<br>&nbsp; &nbsp; if s='ThunderRT6PictureBoxDC' then break;<br>&nbsp; &nbsp; p:=GetWindow(p,GW_HWNDNEXT);<br>&nbsp; end;<br><br><br>&nbsp; chd:=p;<br>&nbsp; p:=GetWindow(chd,GW_child);<br>&nbsp; while (p&lt;&gt;0) do<br>&nbsp; begin<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetwindowText(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetClassName(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,23);<br>&nbsp; &nbsp; if s='ThunderRT6UserControlDC' then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; break;<br>// &nbsp; &nbsp; &nbsp; &nbsp;nn:=nn+1;<br>&nbsp;// &nbsp; &nbsp; &nbsp; if (nn=2) then break;<br>&nbsp; &nbsp; end;<br><br>&nbsp; &nbsp; p:=GetWindow(p,GW_HWNDNEXT);<br>&nbsp; end;<br><br>&nbsp; bringwindowtotop(pp);<br>&nbsp; chd:=p;<br>&nbsp; p:=GetWindow(chd,GW_child);<br>&nbsp; while (p&lt;&gt;0) do<br>&nbsp; begin<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetwindowText(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,100);<br>&nbsp; &nbsp; GetClassName(p,pchar(s),100);<br>// &nbsp; &nbsp;listbox1.Items.add(s);<br>&nbsp; &nbsp; setlength(s,21);<br>&nbsp; &nbsp; if<br>&nbsp; &nbsp; //((length(trim(s))=21) and<br>&nbsp; &nbsp; (s='ThunderRT6UserControl') then<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>&nbsp; &nbsp; p:=GetWindow(p,GW_HWNDNEXT);<br>&nbsp; end;<br>//////////////////////////////////////////////<br>&nbsp; chd:=p;<br>&nbsp; listbox1.clear;<br>&nbsp; p:=GetWindow(chd,GW_child);<br>{<br>&nbsp; sendmessage(p,wm_mouseactivate,wparam(pp),lparam(MA_ACTIVATE *256*256+HTCLIENT));<br>&nbsp; sendmessage(p,wm_setcursor,wparam(chd),lparam(MA_ACTIVATE *256*256+HTCLIENT));<br>&nbsp; sendmessage(p,wm_lbuttondblclk,wparam(mk_lbutton),lparam(10*256*256+10));<br>&nbsp; sendmessage(p,wm_lbuttonup,wparam(mk_lbutton),lparam(10*256*256+10));<br>// &nbsp;sendmessage(p,wm_lbuttondblclk,wparam(mk_lbutton),lparam(50*256+50));<br>// &nbsp;sendmessage(p,wm_lbuttonup,wparam(mk_lbutton),lparam(50*256+50));<br>}<br><br>
 
D

DeityFox

Unregistered / Unconfirmed
GUEST, unregistred user!
同意楼上的<br>首先是要得到控件的句柄,然后用sendmessage发送WM_GETTEXT消息就行了<br>前段时间我刚刚用过
 

来如风

Unregistered / Unconfirmed
GUEST, unregistred user!
对,只要找到该控件的句柄就可以WM_GETTEXT了,sendmessage(handle,wm_gettext,<br>@texts,255);//texts:array[0..255] of char;<br>texts这个数组就是你取的内容了,
 

来如风

Unregistered / Unconfirmed
GUEST, unregistred user!
错了,错了,应该是<br>sendmessage(handle,wm_gettext,255,integer(@texts));//texts:array[0..255] of char;<br>texts这个数组就是你取的内容了,哎,好久没有用了,一时参数顺序都忘了
 
H

hryyx

Unregistered / Unconfirmed
GUEST, unregistred user!
以下代码测试通过(DELPHI6.0+WIN2000SERVER)<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; hWindow, hControl: THandle;<br>&nbsp; sWindowText: PChar;<br>begin<br>&nbsp; hWindow := FindWindow(nil,'未定标题 - 记事本');<br>&nbsp; if hWindow = 0 then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowMessage('未找到指定窗口');<br>&nbsp; &nbsp; Exit;<br>&nbsp; end;<br>&nbsp; hControl := FindWindowEx(hWindow, 0, 'EDIT', nil);<br>&nbsp; if hControl = 0 then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowMessage('未找到指定控件');<br>&nbsp; &nbsp; Exit;<br>&nbsp; end;<br>&nbsp; GetMem(sWindowText, 100);<br>&nbsp; SendMessage(hControl, WM_GETTEXT, 100, LPARAM(sWindowText));<br>&nbsp; Caption := sWindowText;<br>&nbsp; FreeMem(sWindowText);<br>&nbsp; //SendMessage(hControl, WM_CHAR, 65, 0); &nbsp;//也可以向里面写字的呦!!!<br>&nbsp; //最后送你两个函数,很有用的呦 GetCursorPos(),WindowFromPoint()<br>end;<br>
 
M

mckz

Unregistered / Unconfirmed
GUEST, unregistred user!
TXYQBF_GXX@163.COM,你给俺发邮件,俺给你我的那个QQ轰炸机的源代码,呵呵,如果<br>有多个EDIT,就用递规祛查找EDIT句柄。算了,不说了。给我发邮件。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
890
DelphiTeacher的专栏
D
I
回复
0
查看
569
import
I
顶部