PDA

View Full Version : کنترل برنامه از خارج



Hossis
چهارشنبه 05 اسفند 1388, 04:13 صبح
بهتره اين طور سؤال رو مطرح بکنم که :
فرض کنيد يک برنامه ساخته ايد کليدهاي صفحه کليد را کنترل کرده و مثلا هنگام زدن کليد "چ" ،‌ اين برنامه مقدار "خ" به برنامه هاي ديگر (مثل Word) بفرستد.
اين برنامه بايد وقتي رويدادهاي صفحه کليد را بگيرد که Focus را در اختيار ندارد
آيا چنين چيزي ممکن هست در دات نت؟؟؟

Netsky
چهارشنبه 05 اسفند 1388, 09:04 صبح
سلام Hossis جان .
من یه بار یه سورس کد دیدم که با استفاده از GetAsyncKey که یک API هست این کار رو انجام میداد .
خودم هم مدت زیادی دارم دنبال این فایل داخل سورس هام میگردم ولی متاسفنه پیداش نمیکنم .
حالا یه سرچ کوچولو توی گوگل بزن شاید چیزایی پیدا کنی .

pirmard
چهارشنبه 05 اسفند 1388, 16:29 عصر
بهتره اين طور سؤال رو مطرح بکنم که :
فرض کنيد يک برنامه ساخته ايد کليدهاي صفحه کليد را کنترل کرده و مثلا هنگام زدن کليد "چ" ،‌ اين برنامه مقدار "خ" به برنامه هاي ديگر (مثل Word) بفرستد.
اين برنامه بايد وقتي رويدادهاي صفحه کليد را بگيرد که Focus را در اختيار ندارد
آيا چنين چيزي ممکن هست در دات نت؟؟؟

برنامه ضمیمه شده این کار رو برای شما انجام میده .
با زدن کلید A در هر محیطی کلید B ارسال خواهد شد .

Hossis
دوشنبه 10 اسفند 1388, 08:39 صبح
برنامه خيلي خوبي بود ولي فقط رو حروف لاتين و انگليسي کار مي کنه ، حروف فارسي رو ساپورت نمي کنه مثلا وقتي صفحه کليد رو فارسي مي کنم، اين برنامه کليد انگليسي رو مي فرسته به عنوان مثال با زدن حرف "ب" اين برنامه حرف F رو مي فرسته علاوه براين که کليد شيفت رو هم مي فرسته مثلا به جاي "آ" اين رو مي فرسته hShift .
موفق باشيد.

pirmard
جمعه 21 اسفند 1388, 23:21 عصر
برنامه خيلي خوبي بود ولي فقط رو حروف لاتين و انگليسي کار مي کنه ، حروف فارسي رو ساپورت نمي کنه مثلا وقتي صفحه کليد رو فارسي مي کنم، اين برنامه کليد انگليسي رو مي فرسته به عنوان مثال با زدن حرف "ب" اين برنامه حرف F رو مي فرسته علاوه براين که کليد شيفت رو هم مي فرسته مثلا به جاي "آ" اين رو مي فرسته hShift .
موفق باشيد.

اون ! من این پست شما رو الان دیدم !

ببینید ینجا ما سر و کار با کلیدهای صفحه کلید داریم ! نه با کرکترها !
یعنی شما خود کیبرد رو به عنوان یه سخت افزار ! درنظر بگیرید . زمانی که کلید A فشرده بشه کد کلید A رو ارسال می کنه و خبر نداره که الان وضعیت زبان سیستم شما رو فارسی ه یا انگیسی ! یا ... .
پس ما کلن وقتی کد از صفحه کلید می گیریم همین ها رو می تونیم به دست بیاریم . اینکه اون کلید A حالا معرف حرف کوچیکه یا حرف بزرگ و در چه زبانیه رو به صورت نرم افزاری و جدا باید بررسی کرد .

Hossis
شنبه 22 اسفند 1388, 11:48 صبح
اون ! من این پست شما رو الان دیدم !

ببینید ینجا ما سر و کار با کلیدهای صفحه کلید داریم ! نه با کرکترها !
یعنی شما خود کیبرد رو به عنوان یه سخت افزار ! درنظر بگیرید . زمانی که کلید A فشرده بشه کد کلید A رو ارسال می کنه و خبر نداره که الان وضعیت زبان سیستم شما رو فارسی ه یا انگیسی ! یا ... .
پس ما کلن وقتی کد از صفحه کلید می گیریم همین ها رو می تونیم به دست بیاریم . اینکه اون کلید A حالا معرف حرف کوچیکه یا حرف بزرگ و در چه زبانیه رو به صورت نرم افزاری و جدا باید بررسی کرد .
پس بايد به دنبال راهي براي تشخيص وضعيت صفحه کليد باشيم که آيا در حالت زبان فارسي است يا انگليسي ، حروف کوچک است يا بزرگ ...
آيا چنين راهي هست؟

pirmard
شنبه 22 اسفند 1388, 15:19 عصر
پس بايد به دنبال راهي براي تشخيص وضعيت صفحه کليد باشيم که آيا در حالت زبان فارسي است يا انگليسي ، حروف کوچک است يا بزرگ ...
آيا چنين راهي هست؟

دقیقا ! یعنی این راهیه که به ذهن من می رسه .
می تونین یه تابع دیگه داشته باشین که کد کلید ارسالی + وضعیت زبان سیستم + وضعیت کلیدهای دیگه (شیفت + کپس لاک + ... ) رو چک کنه و کرکتر ارسالی رو به شما بده .
کار سختی که نیست .

Hossis
چهارشنبه 28 اردیبهشت 1390, 01:14 صبح
با سلام
من اين برنامه رو امتحان کردم ولي در يک مورد تکرار ميکنه يعني هر دو رو م نويسه
If Key.ToString = "D" Then SendKeys.SendWait("ي") ': SendKeys.Send("")

که نتيجه اش اين ميشه
یي
برای این که تکرار پیش نیاد باید چکار کنم؟