PDA

View Full Version : Không thể gởi phím bằng SendKeys



Offor
18-11-2002, 10:08
Tui xài VB6 trên WinXP. Dùng lệnh Shell để kích hoạt một cửa sổ. Sau đó dùng AppActivate rồi gởi phím bằng Sendkeys nhưng không có tác dụng. Lệnh Shell và AppActivate hoạt động rất tốt nhưng SendKeys thì cứ trơ trơ ra, chẳng tác động gì hết.
Tui đã bê nguyên ví dụ mẫu trong phần Help nhưng cũng không thực hiện SendKeys được. Có ai thử vụ này chưa vậy ?:o

IRON
18-11-2002, 20:47
rồi tớ thử rồi nhưng tờ chưa thử gởi đến cửa sổ khác. Cái send keys nó làm việc tốt lắm đến nỗi phải restart máy luôn he he

fabio
19-11-2002, 15:38
Iron ....tếu thật. Cậu nói thật hay nói chơi vậy

CrazyKing
19-11-2002, 20:19
Để thử coi đã !!! Tui nghĩ chắc là được !!!

danceswithwolves
21-11-2002, 09:49
tôi đã thử Shell Notepad rồi Sendkeys tạo văn bản tự động : mọi thứ chạy tốt. Bạn post đoạn code của bạn lên xem.

Offor
22-11-2002, 10:10
Vậy thì lạ thật. Danceswithwolves xài VB gì, trên nền Win gì ? Tui xài VB6 trên WinXP. Chắc WinXP không hỗ trợ.
Đoạn code của tui rất đơn giản, tui tạo một command button là cmdStart trên form chính là frmMain rồi viết cho cmdStart_Click:
Shell "C:\Windows\Notepad.exe"
AppActivate "Untitled - Notepad"
SendKeys "Hello"
Vậy là xong nhưng nó không chạy. Tui đã thử làm theo chỉ dẫn trong Help rồi bê luôn cả đoạn code ví dụ ra nó vẫn không hoạt động.

danceswithwolves
22-11-2002, 16:13
:) trình dịch và HĐH trên máy dww@ y như máy Offor@. Hihi, có điều dww@ thí nghiệm code trên... máy khác chạy Win98SE (không cần hàm AppActivate). Để dww@ thử lại trên WinXP xem sao. Lạ thật !:)

mRrO
22-11-2002, 17:37
ba.n phai send tu`ng key, mo~i key send phai na`m trong da'u {} thi` chuong tri`nh moi chay duoc, ngoa`i ra ban ca`n phai da.t timeout, mo^~i la`n sendkey phai nghi? khoang 100 (don vi trong ti'nh tho`i gian trong ma'y ti'nh, cha biet goi la` gi`).
doan code le~ ra phai nhu the' na`y
Shell "C:\Windows\Notepad.exe"
AppActivate "Untitled - Notepad"
SendKeys "{H}"
sleep 100
SendKeys "{e}"
sleep 100
SendKeys "{l 2}"
sleep 100
SendKeys "{o}"
sleep 100
cha`o

Nicky
22-11-2002, 19:00
he..he...Offor viết sai cú pháp mà biểu.
Bỏ cái sleep 100 đi. Nó không chạy đâu (trừ phi khai báo..lol..) nhưng nó cũng chả có tác dụng gì cả. Bạn cứ
SendKeys "{o}"
là được thui.

IRON
22-11-2002, 19:41
tớ nói thật đấy chứ. Nếu bạn sử dụng send keys mà không gọi một chương trình nào khách thì một thì phải Ctrl+Break hai thì restart máy. Nhưng mà các cậu ơi tớ có đọc ở đâu đó về cách gửi send keys mà không cần dùng shell, có ai biết không ?

IRON
22-11-2002, 19:44
à, nếu muốn gọi Run thì dùng shell như thế nào. Ý tớ hỏi là tên cái run đó.

Nicky
22-11-2002, 20:11
Sendkeys gửi phím tới Window đang có Focus vì thế chả cần shell, chỉ cần Activate Window đó là được rồi.

Offor
22-11-2002, 22:49
Phù, cuối cùng cũng được. Thì ra WinXP không hỗ trợ việc SendKeys. Theo tui thì có lẽ hàm SendKeys gọi đến 1 hàm Windows API mà WinXP đã loại bỏ hàm này. Tui đã chuyển qua WinME và chạy ngon lành.
Đoạn code của tui như sau :

Private Sub cmdStart_Click()
Shell "C:\Windows\Notepad.exe", vbNormalFocus
AppActivate "Untitled - Notepad"
SendKeys "Hello"
End Sub

Lần này thì lệnh Shell lại có vấn đề. Ở tham số thứ 2 (vbNormalFocus), tui đã thử nhiều tham số khác nhau thì kết quả lại loạn lên. Có lúc vbNormalFocus chạy được, có lúc lại chính nó không chạy được.
Ngoại trừ vbHide, vbMinimizedFocus, vbMinimizedNoFocus không hoạt động với SendKeys, 3 giá trị còn lại là vbMaximizedFocus, vbNormalFocus, vbNormalNoFocus có lúc chạy lúc không. Chẳng hiểu ra làm sao cả.
Việc gởi phím không dùng đến Sleep và cũng không cần phải gởi từng phím một. Đoạn code của tui gởi một loạt phím chạy rất trơn tru. Chỉ bị cái Shell không ổn định thôi. Nếu bỏ đi rồi chạy với cửa sổ Notepad bật sẵn thì perfect ! Nhưng không được Minimize cái Notepad nhé !

mRrO
23-11-2002, 11:25
la`m gi winxp kho^ng ho^~ tro. sendkeys, ban nha`m ro`i, to^i viet sendkeys ba`ng vbs va^~n chay ngon la`nh, ma'y tinh winxp pro.

Offor
23-11-2002, 21:49
Vậy à ? Vậy là Shell có vần đề rồi. Chán thật. Phải nhờ hàm API xử vụ này thôi.

Offor
24-11-2002, 18:00
Mệt quá trời là mệt ! Sao mà VB6 chạy chương trình cứ bị chập chờn, chán quá ! Có lúc chạy SendKeys ngon lành, có lúc nó lại không chạy, rồi có lúc lại báo lỗi. Thật chẳng hiểu nổi. Cứ phải restart lại máy nó mới chạy.

KEM_WALL
24-11-2002, 19:09
do cái windows của you đó, nên xoá láng ( format dĩa cứng ) rùi cài lại win 2000, cài VS 2000 rùi thui, kô thêm gì nữa thì ổn định vô cùng

Nicky
25-11-2002, 14:54
Đúng rồi, dùng cái Sendkeys đó không ổn định lắm đâu. Nicky đã từng thử một chương trình dùng Sendkeys nhưng nó chạy lúc được lúc không chán lắm...Nếu có cách khác thì cố gắng đi, cách đó không ngon đâu...