Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

vb sendkeys


visual

Öne çıkan mesajlar

aktif yapmayarak nasıl yapılır bilemiyorum da

o anda aktif olan programı bul, istediğin programı aktif et, key'i yolla, ilk başta aktif olan programı tekrar aktif et. kullanıcı farkına bile varmayacaktır.[signature][hline]İnsanlar çabuk yükselenleri severler. Fakat hiçbirşey toz ve tüy kadar çabuk yükselemez.

en ince yerim bileğim..!?!
Link to comment
Sosyal ağlarda paylaş

Malesef oradanda bir çözüme ulasabilmis deilim. Fakat elimde en son itibari ile asagidaki kodlar var.

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const WM_SETTEXT = &HC


Private Sub Command1_Click()
tHwnd = FindWindowEx(2229198, 0, vbNullString, vbNullString)
Key = "denemece"


SendMessageByString tHwnd, WM_SETTEXT, 0, Key

End Sub


Bu sekilde uygulamaya örnegin text dosyasi ile yazi yazdirabiliyorum fakat uygulama program ise texti aynen uygulamanin uzerine yaziyor. Tusa basilmis etkisi yapmiyor.
Link to comment
Sosyal ağlarda paylaş

WM_SETTEXT text boxın içindeki yazıyı veya pencerenin başlığını değiştirir. WM_KEYDOWN ve WM_KEYUP mesajı yollayacan.

ha buarada elinde yoksa muhakkak msdn bul bi yerlerden. windows programlama için en ii kaynaktır.

edik; sanırım bu her programda işe yaramaz, program tuş vuruşlarını almak için directInput(directx zırzavatı) veya opengl in fonksiyonlarını kullanıyorsa düzgün çalışmayabilir.
[signature][hline]h u m a n i t y - i s - t h e - o n l y - s u p e r p o w e r !

[Bu mesaj Rahan tarafından 07 Kasım 2004 15:33 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

Private Sub Command1_Click()
dim Key as long

tHwnd = FindWindowEx(2229198, 0, vbNullString, vbNullString)
Key = 50h
SendMessageByString tHwnd, WM_KEYDOWN, Key,0
SendMessageByString tHwnd, WM_KEYUP, Key,0
End Sub

bu kodun P basması lazım =)
ama istersen kod yazmıyım da anlatayım nasıl olduğunu sen bilin.

bu arada Key=50h satırı hata verirse Key=80 de yazabilirsin.[signature][hline]h u m a n i t y - i s - t h e - o n l y - s u p e r p o w e r !
Link to comment
Sosyal ağlarda paylaş

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101


Private Sub Command1_Click()
Dim Key As Long

tHwnd = FindWindowEx(3605134, 0, vbNullString, vbNullString)

Key = 80
SendMessageByString tHwnd, WM_KEYDOWN, Key, 0
SendMessageByString tHwnd, WM_KEYUP, Key, 0

End Sub


Simdi 3605134 numarasi acmis oldugum not defterinin handle numarasi. Bu kodlar dahilinde not defterine kod basmasi gerekiyormu yani ben farkinda olmdan hala hatami yapiyorum bir turlu bastirtamiyorum :)
Link to comment
Sosyal ağlarda paylaş

Evet sen hata yapıyorsun
API'yi yanlış kullanıyorsun !!!!!!!!!!!!!!
"The FindWindowEx function retrieves a handle to a window whose class name and window name match the specified strings. The function searches child windows, beginning with the one following the specified child window. This function does not perform a case-sensitive search. "
userl32.dll.FindWindowExA
Link to comment
Sosyal ağlarda paylaş

aha valla yaptım (C de çalışıyo ama burda hata yapmış olabilirim)


Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long


Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101


Private Sub Command1_Click()
Dim Key As Long

tHwndNotepad = FindWindowEx (0, 0, "Notepad",0)
tHwndEdit = FindWindowEx (tHwndNotepad,0,"Edit",0)

Key=80
PostMessage tHwndEdit , WM_KEYDOWN, Key, 0

End Sub

ya bu code tag ı nasıl kullanılıyo bilen var mı?
[signature][hline]h u m a n i t y - i s - t h e - o n l y - s u p e r p o w e r !

[Bu mesaj Rahan tarafından 08 Kasım 2004 12:11 tarihinde değiştirilmiştir]

[Bu mesaj Rahan tarafından 08 Kasım 2004 12:12 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

şimdik çıkmam lazım gelince tamamını anlatırım. tHwndEdit Notepad penceresinin içindeki yavri (child) window. 2. findwindow'da notepad penceresinin içindeki "Edit" classından türemiş ilk pencereyi buluyoruz. (bu sadece notepad e özel oldu ama bi yöntem daha vardı sanırım onun için de PostThreadMessage kullancaz ama daha denemedim onu)[signature][hline]h u m a n i t y - i s - t h e - o n l y - s u p e r p o w e r !
Link to comment
Sosyal ağlarda paylaş

arkadaslar buldum. yardimlariniz icin cok tesekkurler ve tabi kodu sizlerle paylasmak istiyorum.

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_KEYDOWN = &H100
Const VK_A = &H541
Const VK_RETURN = &HD

Private Sub Command1_Click()
tHwnd = FindWindowEx(590390, 0, vbNullString, vbNullString)
PostMessage tHwnd, WM_KEYDOWN, VK_A, 0
PostMessage tHwnd, WM_KEYDOWN, VK_RETURN, 0
End Sub

Simdi yukarida key kodlari var bu keyler hangi kodlamaya gore bulunuyor onu daha cozemedim

Const VK_A = &H541
Const VK_RETURN = &HD

vk_A a tusuna vk_return entere basiyor. Umarim sizlerinde isine yarar.
Link to comment
Sosyal ağlarda paylaş

visual bu FindWindowEx i hala hatalı kullanıyorsun.

FindWindowEx(
HWND parent,
HWND childAfter,
char* className
char* windowname
)

buda HWND pencere handle ı demektir Long tipindedir. char * dediğim string.

parentı tanımlarsan aha aradığımız pencerenin anası budur demiş olursun, yani çocuğunu aradığın window buraya. tanımlamazsan desktopwindow kullanılır.

childafter ı tanımlarsan aynı kriterlere sahip ikinci child windowu alırsın. (misal 2 tane notepad penceresi var, ilkini aldın ikincisini almak için 1. bulduğun notepad handle ını buraya koyarsın.) açılan her notepad (ve dier programlar) ın pencereleri öncelikle desktopwindowun çocuğudur.

className registerclass la register edilmiş class'ın ismi (bu vb veya c deki class değil apayrı bi kavram). Spy++ 'la etrafı bi kurcala. detaylı bilgi içün msdn.

windowname de pencerenin başlığı.
------------------
tHwnd = FindWindowEx(590390, 0, vbNullString, vbNullString)

bu satırının çalışmasının tek sebebi notepadin handle ını parent a yazıp ilk child windowunu alman yani burda
benim yukarda yaptığım 2 tane findwindow un ilkini sen elle yapıyosun. ama problem şurda ki handleları bu şekilde belirleyemezsin, 590390 sadece o anda açık olan notepadin handle ı olur notepadi açıp kapattığında değerini yitirir. (ki bu yüzden FindWindowEx diye bi fonksiyon var.)

virtual-key code ları için fonksiyon var VkKeyScan diye "user32.lib"de 1 bytelık char alıp short değer döndürüyor, döndürdüğü short değerin low orderı (ilk 8 biti) sana virtual key code u verir. visual basic de kullanmak için sanırım google da biraz araştırman gerekir.

ayrıcana virtual Key Codeları MSDN de var zaten; cidden ilk iş olarak MSDN yükle bilgisayarına. aha da şimdilik bunları buraya paste edeyim.

ilk kolon C++ da kullanılan Constant (VB de var mı bilmiyorum) ikincisi sabitin hexadecimal değeri. 3. sü de anlatıyo hangi tuş diye

said:

VK_LBUTTON 01 Left mouse button
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
VK_XBUTTON1 05 Windows 2000/XP: X1 mouse button
VK_XBUTTON2 06 Windows 2000/XP: X2 mouse button
07 Undefined
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
0A0B Reserved
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
0E0F Undefined
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_PAUSE 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
VK_KANA 15 IME Kana mode
VK_HANGUEL 15 IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
VK_HANGUL 15 IME Hangul mode
16 Undefined
VK_JUNJA 17 IME Junja mode
VK_FINAL 18 IME final mode
VK_HANJA 19 IME Hanja mode
VK_KANJI 19 IME Kanji mode
1A Undefined
VK_ESCAPE 1B ESC key
VK_CONVERT 1C IME convert
VK_NONCONVERT 1D IME nonconvert
VK_ACCEPT 1E IME accept
VK_MODECHANGE 1F IME mode change request
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
VK_PRINT 2A PRINT key
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C PRINT SCREEN key
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
30 0 key
31 1 key
32 2 key
33 3 key
34 4 key
35 5 key
36 6 key
37 7 key
38 8 key
39 9 key
3A40 Undefined
41 A key
42 B key
43 C key
44 D key
45 E key
46 F key
47 G key
48 H key
49 I key
4A J key
4B K key
4C L key
4D M key
4E N key
4F O key
50 P key
51 Q key
52 R key
53 S key
54 T key
55 U key
56 V key
57 W key
58 X key
59 Y key
5A Z key
VK_LWIN 5B Left Windows key (Microsoft Natural keyboard)
VK_RWIN 5C Right Windows key (Natural keyboard)
VK_APPS 5D Applications key (Natural keyboard)
5E Reserved
VK_SLEEP 5F Computer Sleep key
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_MULTIPLY 6A Multiply key
VK_ADD 6B Add key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H
Link to comment
Sosyal ağlarda paylaş

said:
Rahan, 08 Kasım 2004 14:24 tarihinde demiş ki:
visual bu FindWindowEx i hala hatalı kullanıyorsun.

FindWindowEx(
HWND parent,
HWND childAfter,
char* className
char* windowname
)

:)
boşuna klavyeni yorma dostum
aynı şeyi ben adama 1. sayfada da söyledim
MSND'den fonskyona tam link verdim ancak arkdaş okumayı pek sevmiyor...
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...