PDA

View Full Version : سوال: پیدا کردن text در یک برنامه دیگه



mohsen57
دوشنبه 30 دی 1387, 14:42 عصر
فرض کنید یک برنامه در حال اجرا داریم که یک TextBox در آن وجود دارد. ما چجوری میتونیم به متن TextBox آن برنامه دسترسی داشته باشیم یعنی بدونیم توش چی نوشته.:لبخند:

soheilbehro
دوشنبه 30 دی 1387, 14:57 عصر
فرض کنید یک برنامه در حال اجرا داریم که یک TextBox در آن وجود دارد. ما چجوری میتونیم به متن TextBox آن برنامه دسترسی داشته باشیم یعنی بدونیم توش چی نوشته.:لبخند:
می تونی آن text box را که می خواهی نوشته داخلشو ببینی به یک بانک اطلاعاتی از طریق کنترل data وصل کنی و هر داخل آن باشد در بانک اطلاعاتی ذخیره می شود سپس می تونی در برنامه خودت نیز آن text box را به همان بانک اطلاعاتی متصل کنی.

mohsen57
دوشنبه 30 دی 1387, 16:50 عصر
می تونی آن text box را که می خواهی نوشته داخلشو ببینی به یک بانک اطلاعاتی از طریق کنترل data وصل کنی و هر داخل آن باشد در بانک اطلاعاتی ذخیره می شود سپس می تونی در برنامه خودت نیز آن text box را به همان بانک اطلاعاتی متصل کنی.
ان برنامه که من سورسش رو ندارم اصلا مال من نیست.
فقط میدونم که باید هندل آن برنامه رو پیدا کنم بعدش نمیدونم چجوری باید TextBox و متنش رو پیدا کنم. :متفکر: البته یه چیز دیگه هم هست که شاید کار رو راحت کنه میدونم که متن آن TextBox از 3 حالت خارج نیست یا توش نوشته Cancel یا I'm ready یا Yes

Felony
دوشنبه 30 دی 1387, 19:36 عصر
ابتدا باید هندل برنامه ، هندل فرمی که TextBox توش قرار داره و هندل خود TextBox رو به دست بیاری و بعد به TextBox ت یه پیغام بفرستی و نتیجشو دریافت کنی .

برای فرستادن پیغام از SendMessage و PostMessage استفاده میشه که با هم یه فرق کوچیک دارند ، PostMessage پیغام رو به برنامه ی مورد نظر میفرسته و به برنامه بر میگرده و ادامه ی کار رو میده ( در حقیقت پیغام رو تو صف برنامه میزاره تا برنامه وقتی بهش رسید پردازشش کنه ) ولی SendMessgae پیغام رو به برنامه میفرسته و منتظر جوایش میمونه و تا جواب رو نگیره به برنامه بر نمیگرده .

برای اطلاع بیشتر به MSDN مراجعه کنید .

r0ot$harp
سه شنبه 01 بهمن 1387, 00:28 صبح
دوست عزیز اینم خدمت شما :



Private Const WM_GETTEXT = &HD

Private Const WM_GETTEXTLENGTH = &HE

Dim txtlen As Long

Dim txt As String, TxtFinal As String

Dim lhWnd As Long

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long

Private Sub Form_Load()
txtlen = SendMessage(lhWnd, WM_GETTEXTLENGTH, 0, 0)

If txtlen = 0 Then Exit Sub
txtlen = txtlen + 1
txt = Space$(txtlen)
txtlen = SendMessage(lhWnd, WM_GETTEXT, txtlen, ByVal txt)
txt = Left$(txt, txtlen)
TxtFinal = txt
End Sub




باتشکر احسان

mohsen57
سه شنبه 01 بهمن 1387, 02:12 صبح
ممنون
فقط اگه بگی چجوری هندل TextBox رو پیدا کنم دیگه کار تمومه. برنامه مورد نظر یدونه TextBox بیشتر نداره.
با کد زیر که جواب نداد:

EditHandle = FindWindowEx(windowHandle, 0, "Edit", vbNullString)

r0ot$harp
سه شنبه 01 بهمن 1387, 03:02 صبح
ممنون
فقط اگه بگی چجوری هندل TextBox رو پیدا کنم دیگه کار تمومه. برنامه مورد نظر یدونه TextBox بیشتر نداره.
با کد زیر که جواب نداد:

EditHandle = FindWindowEx(windowHandle, 0, "Edit", vbNullString)


دوست عزیز اول با FindWindow هندل پنجره اصلی رو بدست بیارین بعد با FindWindowEx هندل تکست باکس رو بدست بیارید . نمونه در سایت زیاد هست . در پست های بنده جستجو کنید .



باتشکر احسان

babol-hacker
سه شنبه 01 بهمن 1387, 11:51 صبح
تو پاسکال در مورد کار با اشاره گرها و @ و ^ یه چیزهایی هست مثلا میشه ادرس یک متغییر و تو رم و تو یک متغییر دیگه قرار داد و بدش با دستور ^ محتویات اونو خوند یعنی دسترسی غیر مستقیم حالا این ادرس از نوع چیه و نمیدونم اما متشکا از عدد و حروفه
مثلا ما بیایم یه برنامه بنویسیم و توی متغیر x عدد 1 و بنویسیم و با یه برنامه دیگه با یه حلقه ادرس و در بیاریم و با ^ محتویات اونو بخونیم

babol-hacker
سه شنبه 01 بهمن 1387, 12:23 عصر
اگه بشه رم و مدیریت کرد و با محتویاتش کار کرد میشه به معنای متغییر که حافظه موقت هست و جاشم رم کامپیوتره اطلاعاتو با ادرس هاشون خوند

mohsen57
سه شنبه 01 بهمن 1387, 12:45 عصر
دوست عزیز اول با FindWindow هندل پنجره اصلی رو بدست بیارین بعد با FindWindowEx هندل تکست باکس رو بدست بیارید . نمونه در سایت زیاد هست . در پست های بنده جستجو کنید .



باتشکر احسان

هندل پنجره اصلی مشکلی ندارم ولی هندل تکست باکس رو نتونستم پیدا کنم. با FindWindowEx نتونستم پیداش کنم شاید من اشتباه نوشتم.
پستهای شما رو دیدم چیزی در مورد پیدا کردن هندل تکست باکس ندیدم.

mohsen57
سه شنبه 01 بهمن 1387, 23:21 عصر
کسی بلد نیست؟

id1385
پنج شنبه 03 بهمن 1387, 19:11 عصر
ای وللا دست تلا :بامزه: