PDA

View Full Version : نوشتن برنامه ای برای پر کردن فیلد های یک برنامه دیگر



mahsa_kb
سه شنبه 21 آبان 1387, 22:55 عصر
باسلام , ممنون می شم اگه من را راهنمایی کنید :
برای نوشتن برنامه ای که بتونه فیلدهای برنامه دیگری را پر کند باید چیکار کنم .
مثل گزینهauto fill در گوگل تولبار , که وقتی کلیک کنی فیلد ها را پر می کنه !
البته من برای صفحه وب نمی خواهم , می خوام در پنجره یک برنامه دیگه کار کنه
مرسی از کمکتون :تشویق::تشویق::تشویق:

behnam_dr
چهارشنبه 22 آبان 1387, 00:16 صبح
ممکنه سوالتون رو واضح تر بیان کنید ؟ آیا منظورتون اینه که برنامه ای بنویسید که فیلدهای تیبلی رو با اطلاعات بی ارزش پر کنید یا ... !

DAMAVAND
چهارشنبه 22 آبان 1387, 04:18 صبح
باسلام , ممنون می شم اگه من را راهنمایی کنید :
برای نوشتن برنامه ای که بتونه فیلدهای برنامه دیگری را پر کند باید چیکار کنم .
مثل گزینهauto fill در گوگل تولبار , که وقتی کلیک کنی فیلد ها را پر می کنه !
البته من برای صفحه وب نمی خواهم , می خوام در پنجره یک برنامه دیگه کار کنه
مرسی از کمکتون :تشویق::تشویق::تشویق:

براي اين کار بايد ابتدا Handle قسمتي که ميخواهيد در ان بنويسيد رو با کمک Findwindow.. بدست بياريد بعد متن خودتون با کمک تابع Sendmessage و پيغام Settext متن رو داخل اون بنويسيد.

mahsa_kb
چهارشنبه 22 آبان 1387, 09:53 صبح
میشه لطفا بیشتر راهنمایی کنید ؟
از چه دستوراتی باید استفاده کنم ؟
ممنون میشم .

DAMAVAND
چهارشنبه 22 آبان 1387, 19:14 عصر
میشه لطفا بیشتر راهنمایی کنید ؟
از چه دستوراتی باید استفاده کنم ؟
ممنون میشم .

براي هر برنامه يک کم فرق ميکنه ولي اساس کار يکي هست براي مثال اين کد يه متن دلخواه رو توي ماشين حساب ويندوز مينويسه :


procedure TForm1.Button1Click(Sender: TObject);
var
H:HWND;
Text:String;
begin
Text:='1234567';
H:=FindWindow(nil,'Calculator'); // Find Calculator window handle
H:=FindWindowEx(H,0,'Edit',nil); // Find editbox handle
SendMessage(H,WM_SETTEXT,0,longint(@Text[1])); //set text

end;

mahsa_kb
پنج شنبه 23 آبان 1387, 15:03 عصر
آیا با این روش می توانم محتویات یک DBGride که در همان برنامه است را در یک فایل کپی کنم ؟
باید از چه دستوری در sendmessage استفاده کنم ؟
از اینکه وقت می گذارید ممنون

Hamid_PaK
پنج شنبه 23 آبان 1387, 18:03 عصر
آیا ذخیره اطلاعات DBGrid در فایل متنی لزومی داره که باید از توابع API استفاده کنید ؟
چرا که راه های بسیاری برای این عملیات وجود داره تازه اطلاعات نیز در برنامه خودتان هست!

یا حق ...

mahsa_kb
شنبه 25 آبان 1387, 09:18 صبح
آیا ذخیره اطلاعات DBGrid در فایل متنی لزومی داره که باید از توابع API استفاده کنید ؟
چرا که راه های بسیاری برای این عملیات وجود داره تازه اطلاعات نیز در برنامه خودتان هست!

یا حق ...

دوست عزیز :
جدولDBGride در برنامه خودم نیست و دسترسی به اطلاعاتش لازم است و به سورس اون برنامه هم دسترسی ندارم . تازه برنامه هم طوری نوشته شده که هربار که RUN میشه یک جدول در حافظه می سازد . به نظر شما چیکار کنم ؟؟؟؟ :ناراحت::ناراحت::ناراحت:

Hamid_PaK
شنبه 25 آبان 1387, 21:08 عصر
دریافت اطلاعات کنترلهای برنامه های دیگه توسط توابع API کار بسیار مشکلی است، بسته به نوع زبان و نوع کنترل کار بسیار سخت می شود.
برای اینکه کار کمی ساده شود با ابزارهایی که کلاسها و نام کنترها رو نمایش می دهد DBGrid مورد نظر را بررسی کنید تا ببینید که اطلاعات سلول ها چگونه نمایش داده می شود تا بتوان با استفاده از متود های دریافت متن کنترلرها اطلاعات را فراخوانی کرد.


FindWindow
FindWindowEx
GetWindowText

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

یا حق ...

Iman_a13
شنبه 16 آذر 1387, 15:29 عصر
سلام دوستان مرسی برای مطالب خوبتون میشه بگید اگه بخوام از یه edit بخونم چیکار باید بکنم مثلا بجای اینکه توی edit برنامه ماشین حساب بنویسه 12345 بیاد متن نوشه شده در آن را در یک string بریزه و بعبارتی بخونه؟

vcldeveloper
شنبه 16 آذر 1387, 22:03 عصر
سلام دوستان مرسی برای مطالب خوبتون میشه بگید اگه بخوام از یه edit بخونم چیکار باید بکنم مثلا بجای اینکه توی edit برنامه ماشین حساب بنویسه 12345 بیاد متن نوشه شده در آن را در یک string بریزه و بعبارتی بخونه؟
هندل پنجره Edit مورد نظر را با استفاده از توابعی که دوستان در بالا اشاره کردند، بدست بیارید، بعد با استفاده از SendMessage بهش پیام WM_GETTEXT ارسال کنید.