# Native Code > برنامه نویسی در 6 VB > برنامه نویسی مرتبط با بازی و گرافیک در VB6 >  چه جوری میشه یک کیبورد مجازی ساخت که متن را درون برنامه هایی که باز هستن تایپ کنه؟

## rezarko

چه جوری میشه یک کیبورد مجازی ساخت که متن را درون برنامه هایی که باز هستن تایپ کنه؟

----------


## setroyd

با api میتونی با توابع vb نمیشه برای این کار باید رو توابعی که رو کیبورد کار میکنن کار کنی که با یه سرچ میتونی تو همینجا مطالب به درد بخوری رو یاد بگیری

----------


## h_a_m_i_d

دوست عزیز شما میتونین این کار رو با توابع خود vb هم انجام بدید
Sendkey "{enter}"
Sendkey "h"
Sendkey 95

----------


## program2vb

> دوست عزیز شما میتونین این کار رو با توابع خود vb هم انجام بدید
> Sendkey "{enter}"
> Sendkey "h"
> Sendkey 95


آخه عزیز وقتی تو روی فرم خودت کلیک کنی که سند کی بکنه اون موقع فرم خودت ست فکوس میشه و سند کی داخل برنامه تو کار میکنه نه اون فرمی که میخوای اونجا بنویسی . 


موفق و پیروز باشی . یا علی

----------


## h_a_m_i_d

خوب میتونیم به محض این که فرم فوکوس رو دریافت کرد فوکوس خودشو از دست بده 
اینطوری مگه نمیشه

----------


## program2vb

نه عزیز نمیشه 

تو هر جا از فمت که کلیک یکنی فرمت فوکس میش و اون عملیات سند به فرمی انتقال داده میشه که فوکس رو اون باشه که نمیشه . اون دستورتم Sendkey نیس Sendkeys اونو اصلاح کن . 

موفق و پیروز باشی یا علی .

----------


## cjmoon

سلام یه راه دیگه هم هست اونم اینه  مثلا حرف a رو می خوامرو برچسب نشون بدم  و label1.caption دومی باعث میشه که پشت سر هم چاپ کنه




> Label1.Caption = Label1.Caption + "a"

----------


## rezarko

منظورم من اینه که مثلا اگه برنامهNotePad باز باشه A رو درون NotePad تایپ کنه

----------


## ASedJavad

سلام
اگه اجازه بدید، کاری رو که شما میخواید انجام بدید، به چند جزء تقسیم کنم. این طوری شما راحت تر میتونید جستجو کنید و به جواب برسید.

1- مسلمه که در شروع کار باید برنامتون به صورت top-most یا شبیه اون دربیاد که که حتی وقتی برنامتون غیر اکتیو هست (فوکوس رو یه برنامه دیگه هست) باز هم برنامتون روی سایر برنامه ها نشون داده بشه.

2- به دست اوردن هندل برنامه فعال (که در مثال شما همون نوتپد هست)

3- پس از فشرده شدن کامند باتون در برنامه شما: فرستادن کی کد مورد نظرتون به برنامه ای که در قسمت دوم هندل اون رو بدست اوردین با تابع سند مسیج یا پست مسیج.
(اگه بخواین از sendKey استفاده کنید قبلش باید برنامه که در قسمت 2 گفتیم رو دوباره فعال کنید.)

----------


## rezarko

درسته ولی چه جوری؟ میشه یه کم بیشتر راهنمایی کنید؟

----------


## ASedJavad

کجاشو؟
کدوم قسمتشو؟
راستی!
جستجو یادت نره

----------


## rezarko

این که وقتی فوکوس روی برنامه های دیگه هست برنامه من نشون داده بشه

----------


## ASedJavad

اگه اشتباه نکنم با ای پی ای SetWindowPos

----------


## rezarko

ممنون .
شما ندارید؟

----------


## ASedJavad

این تعریف تابع:
Private Const SWP_HIDE = &H80
Private Const SWP_SHOW = &H40
Private Const SWP_REDRAW  = &H20
Private Const SWP_NOREDRAW = &H100
Private Const SWP_NOMOVE = &H2
Private Const SWP_NORESIZE = &H1
Private Const SWP_NOZORDER = &H4

Private Const ZORDER_SENDTOBACK = 1
Private Const ZORDER_FIRSTTOP = 0
Private Const ZORDER_NOTOPMOST = -2
Private Const ZORDER_TOPMOST = -1

Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cWidth As Long, ByVal cHeight As Long, ByVal wFlags As Long) As Long

اینم توضیحاتش:



> اين تابع مي تواند مشخصه هاي مکاني (طول ، عرض ، چپ و بالا) يک پنجره را تغيير دهد. يعني قابليت تغيير مکان و تغيير اندازه يک پنجره را دارا مي باشد.
> گر تابع کار خود را با موفقيت به پايان برساند مقدار بازگشتي يک عدد غير صفر و اگر تابع با خطايي مواجه شود مقدار بر گشتي صفر خواهد بود
> 
> hwnd   :  هندل پنجره مورد نظر
> hWndInsertAfter   :  اين متغير مشخص کننده مکان پنجره در محور z است (zorder). در اين باره ثابت هاي زير به شما کمک خواهد کرد
>      ZORDER_SENDTOBACK   :  پنجره را به زير تمامي پنجره ها انتقال مي دهد
>      ZORDER_FIRSTTOP   :  پنجره را بر روي تمامي پنجره ها (حتي TopMost) انتقال مي دهد
>      ZORDER_NOTOPMOST   :  اين پنجره را بر روي تمامي پنجره ها به جز TopMost انتقال مي دهد
>      ZORDER_TOPMOST   :  پنجره را TopMost کرده و بر روي همهء پنجره ها انتقال مي دهد
> ...

----------


## nakhodasokoot

دوستان من تو استفاده از این تابع API مشکل دارم. این Error  رو که تو عکس گذاشتم نشون میده. چیکار کنم؟

----------


## ASedJavad

مطمئنی تالار درستی برا سوالت انتخاب کردی؟

----------


## nakhodasokoot

آقا شرمنده
من انقدر هول شدم که اصن به تالارش نگاه نکردم  :لبخند گشاده!: 
میرم تو net. میپرسم
ممنون

----------

