ايران ويج

نسخه‌ی کامل: ارسال كليدهاي مشابه صفحه كليد ! ؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
مي خوام به جاي استفاده از Sendkeys از API استفاده كنم
براي اين كار تابعي وجود داره ؟
Question
میتونین با sendmessage یا postmessage و wm_char اطلاعات خودتونو به هر پنجرهای ارسال کنین
کد:
postMessage(handle, WM_CHAR, Word(char), 0);
مقدار wm_char v رو برابر &H102 قرار دادم ، درسته ؟

اما Word(char) رو متوجه نشدم چطوري كار كنم
يك كاراكتر رو باهاش ارسال مي كنه ؟
شما handle اون پنجرهای که میخواهید کلیدها رو بهش ارسال کنین رو بدست مییارین که میشه همون handle بعد تو پارامتر دومی باید نوع پیغام ارسالی مشخص باشه که wm_char هست پارامتر سوم و چهارم رو هم همین wm_char مشخص میکنه که سومی یه مقدار word یک حرف هست و مقدار چهارم 0 هست چون بهش احتیاجی نیست
کد:
Sendmessage(controlhandle,wm_char,#41,0);
که #41 مقدار word مربوط به کلید A میباشد
نقل قول: The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. WM_CHAR contains the character code of the key that was pressed.

WM_CHAR
chCharCode = (TCHAR) wParam; // character code
lKeyData = lParam; // key data
[/code]
من اين رو نوشتم
کد:
SendMessage GetFocus, WM_CHAR, CLng(65), 0&
كار ميكنه
اما فقط داخل فرم خودم
چطوري مي تونم فوكوس برنامه هاي ديگه رو ببينم دست كدوم كنترل هست
getfocus که نباید مشکلی داشته باشه
ولی میتونین از getforgroundwindow هم استفاده کنین
یا اول هندل اون کنترل رو با findwindow و findwindowex بدست بیارن و اون هندل رو پاس بدین به send message
lord_viper نوشته است:getfocus که نباید مشکلی داشته باشه
ولی میتونین از getforgroundwindow هم استفاده کنین
یا اول هندل اون کنترل رو با findwindow و findwindowex بدست بیارن و اون هندل رو پاس بدین به send message
بهتره برای پیدا کردن کنترل های یک پنجره از FindWindowEx استفاده بشه

که می شه پنجره مادر رو از طریق FindWindow بدست آورد
با getforgroundwindow و GetActiveWindow داخل sendmessage و pstmessage امتحان كردم جواب نداد ، همون مشكلي رو داره كه قطعه كد mojtabamalaekeh داشت
با getfocus هم امتحان كردم جواب داد ، اما getfocus فقط هندل كنترلي كه درون برنامه من فوكوس داره بهم ميده
حالا مي خوام ببينم توي برنامه هاي ديگه فوكوس دست كدوم كنترل هست ، !؟
با findwindow و findwindowex هم نتونستم اين كار رو انجام بدم
Help me ! Please
چرا می خوای بدونی فوکوس دست کدومه؟
اين تابع sendmessage و postmessage كليدي رو كه ميخوام ارسال ميكنه
اما به اون كنترلي ارسال مي كنه كه هندل رو بهش دادم
خوب اگر با getwindow يا activewindow كار كنم ، هندل فرم رو برميگردونه
پس در اين صورت من كليد رو دارم به فرم ارسال مي كنم نه به كنترل فوكوس دار
حالا مي خوام زماني كه فوكوس دست يك كنترلي مثل textbox هست و كليد رو ارسال كردم اون كنترل كليد رو دريافت كنه
الان مشكل من فقط همينه : (هندل كنترلي رو مي خوام كه درون برنامه اي ديگه فوكوس رو در دست داره )
ممنون
vz67 نوشته است:اين تابع sendmessage و postmessage كليدي رو كه ميخوام ارسال ميكنه
اما به اون كنترلي ارسال مي كنه كه هندل رو بهش دادم
خوب اگر با getwindow يا activewindow كار كنم ، هندل فرم رو برميگردونه
پس در اين صورت من كليد رو دارم به فرم ارسال مي كنم نه به كنترل فوكوس دار
حالا مي خوام زماني كه فوكوس دست يك كنترلي مثل textbox هست و كليد رو ارسال كردم اون كنترل كليد رو دريافت كنه
الان مشكل من فقط همينه : (هندل كنترلي رو مي خوام كه درون برنامه اي ديگه فوكوس رو در دست داره )
ممنون
جناب vz67 وقتی که پنجرهای فوکوس روش هست هر کلیدی که فشار بدین به همون پنجره میره وقتی فوکس روشه و مستقیم متن تایپی شما به اون کنترل میره شما چرا میخواهی این کارو بکنی؟
دقیقا بگین چکار میخواهید بکنید و برای چه برنامه ای هست تا بتونم بهتر بهتون توضیح بدم
صفحه‌ها: 1 2