Nhờ giúp đỡ: truy cập và điều khiển ứng dụng khác (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

anhdepjai

Thành viên thường trực
Tham gia
16/6/10
Bài viết
383
Được thích
92
Chào cả nhà,
Hiện mình đang vướng như sau: Mình viết 1 đoạn code trong excel để nó chuyển sang cửa sổ của phần mềm quản lý rồi yêu cầu download dữ liệu bằng hàm sendkeys. Sau đó phần mềm quản lý sẽ cho tải xuống dữ liệu dạng file excel. Và code sẽ tự chay khi sự kiện worksheet deactivate.
Tuy nhiên, việc chuyển đổi giữa các cửa sổ xem ra không được ổn lắm vì phần mềm quản lý bị show lên màn hình.

Mình nhờ mọi người sửa giúp đoạn code để nó có thể sendkey sang phần mềm quản lý mà không yêu cầu phần mềm đó hiện lên. (như kiểu sendkey ngầm ấy).

THanks
Ah mà đoạn code của mình như sau:


Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Const GW_HWNDNEXT = 2
Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long



Sub ConnectHG_FG()
Static chk As Boolean
Dim i As Long
Dim t1, t2 As String
Dim hwnd
t1 = Format(Now, "yymm") & "01"
t2 = Format(Now, "yymmdd")
'StopClock
For i = 51 To 74
If Format(Now, "hh:mm:ss") = Format(Sheet1.Cells(i, 3), "hh:mm:ss") Then
Do
hwnd = IIf(chk, FindWindow(vbNullString, "System HG ver 2.0 *** TOKYO ***@Inventory List "), Application.hwnd)
ShowWindow hwnd, 3
BringWindowToTop hwnd
chk = Not chk
Loop Until hwnd = FindWindow(vbNullString, "System HG ver 2.0 *** TOKYO ***@Inventory List ")
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "%VIL", True
Application.Wait (Now + TimeValue("0:00:8"))
Application.SendKeys "^{TAB}", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "{TAB}", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys " ", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "{F2}", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "~", True
Goback
End If
Next
End Sub
 
Hic, cả nhà cho em up cái này với ah, mong giúp đỡ.
 
Upvote 0
Hic, cả nhà cho em up cái này với ah, mong giúp đỡ.

hàm sendkeys chỉ làm việc với cửa sổ nào đang activate mà thôi
tuy nhiên cũng có thể chơi chiêu khác thay thế hàm sendkey , tùy vào kinh nghiệm
phần mềm của bạn là gì ? tôi có thể tải xuống nghịch thử được không ?
 
Upvote 0
Thấy bạn cần giúp, mình giải thích cho bạn hiểu như sau, hàm sendkeys (in app) hay key_event (api) dùng để giả lập sự kiện các phím đc nhấn và gửi đến 1 chương trình nào đó mà chương trình đó muốn nhận thì phải ở chế độ active, còn nếu nó ở background thì ko nhận đc sự kiện này. Từ chương trình của bạn mà muốn điều khiển chương trình khác thì chương trình ấy phải là chương trình có hỗ trợ automation (OLE app), giống như EXCEL, OUTLOOK... còn nếu ko thì khó đấy :)
 
Upvote 0
hàm sendkeys chỉ làm việc với cửa sổ nào đang activate mà thôi
tuy nhiên cũng có thể chơi chiêu khác thay thế hàm sendkey , tùy vào kinh nghiệm
phần mềm của bạn là gì ? tôi có thể tải xuống nghịch thử được không ?
:( Phần mềm bên mình để quản lý hệ thống. Mình không share lên được. Tuy nhiên bạn có chiêu gì thì hướng dẫn mình với. Thanks
 
Upvote 0
:( Phần mềm bên mình để quản lý hệ thống. Mình không share lên được. Tuy nhiên bạn có chiêu gì thì hướng dẫn mình với. Thanks
Thì cứ úp lên cho Bạn ý Nghịch một tẹo có sao ....úp File Setup thôi còn CDkey thì cho vào két sắt mà khóa lại ...xong thôi mà --=0--=0--=0
 
Upvote 0
Thì cứ úp lên cho Bạn ý Nghịch một tẹo có sao ....úp File Setup thôi còn CDkey thì cho vào két sắt mà khóa lại ...xong thôi mà --=0--=0--=0

Bác cứ đùa. Phần mềm là của riêng công ty, nội bộ của người ta sao share cho bác được. Chưa kể việc cài đặt - cấu hình vào server nội bộ của người ta bác mới chạy được...Bác cứ tưởng...dễ như ăn kẹo vậy cơ ah???--=0--=0--=0
 
Upvote 0
Bác cứ đùa. Phần mềm là của riêng công ty, nội bộ của người ta sao share cho bác được. Chưa kể việc cài đặt - cấu hình vào server nội bộ của người ta bác mới chạy được...Bác cứ tưởng...dễ như ăn kẹo vậy cơ ah???--=0--=0--=0
Biết vậy nên Mạnh mới thòng câu này CDkey thì cho vào két sắt ...
Tại cái tính ham chơi và hay vọc nên cũng muốn quậy một tí đó mà --=0--=0
 
Upvote 0
Biết vậy nên Mạnh mới thòng câu này CDkey thì cho vào két sắt ...
Tại cái tính ham chơi và hay vọc nên cũng muốn quậy một tí đó mà--=0--=0
Thank Kiều Mạnh nhưng mình không share được. @$@!^%. Hok biết ngoài sendkey có code nào gửi hàm yêu cầu sang phần mềm khác mà không bắt nó active lên hok nhỉ
 
Upvote 0
Thank Kiều Mạnh nhưng mình không share được. @$@!^%. Hok biết ngoài sendkey có code nào gửi hàm yêu cầu sang phần mềm khác mà không bắt nó active lên hok nhỉ
Với khả năng của mình thì rất khó thực hiện ....nhưng với một số Bạn khác Mình nghĩ là họ có khả năng đó...

Nhưng cứ trao đổi suông như vậy mình nghĩ Tịt 100 /100 quá vì sendkey cho cái gì để mà làm căn cứ người ta có thể nghiên cứu...

VD như File sau mình úp lên: chạy với quyền Admin Áp dụng cho Win7 trở lên mà UAC đang bật ON .....

Mình cũng đang tìm kiếm cách
sendkey khi chạy Form nó chon Yes hoài mà cũng không được ...+-+-+-+--=0|||||

Và trong một số trường hợp không thể thực hiện được đâu Bạn...mặc dù biết rõ ứng dụng đó muốn
sendkey cái gì ... còn như Bạn nói Suông như vậy người ta biết cái gì mà sendkey ....+-+-+-+
 

File đính kèm

Upvote 0
Với khả năng của mình thì rất khó thực hiện ....nhưng với một số Bạn khác Mình nghĩ là họ có khả năng đó...

Nhưng cứ trao đổi suông như vậy mình nghĩ Tịt 100 /100 quá vì sendkey cho cái gì để mà làm căn cứ người ta có thể nghiên cứu...

VD như File sau mình úp lên: chạy với quyền Admin Áp dụng cho Win7 trở lên mà UAC đang bật ON .....

Mình cũng đang tìm kiếm cách
sendkey khi chạy Form nó chon Yes hoài mà cũng không được ...+-+-+-+--=0|||||

Và trong một số trường hợp không thể thực hiện được đâu Bạn...mặc dù biết rõ ứng dụng đó muốn
sendkey cái gì ... còn như Bạn nói Suông như vậy người ta biết cái gì mà sendkey ....+-+-+-+
Kiều Mạnh ah,

Cái file mà bạn gửi lên diễn đàn mình hok hiểu
 
Upvote 0
Kiều Mạnh ah,

Cái file mà bạn gửi lên diễn đàn mình hok hiểu
Nếu máy Bạn là win7 trở lên mà UAC đang ON ... thì khi chạy nó Win nó hỏi Bạn phải chọn Yes nó mới cho chạy Còn chọn NO thì nó thoát....trong trường hợp đó Mình cũng đang tìm cách cho nó Sendkeys Yes sang hộp thoại cảnh báo của Win mà Tịt....
 
Lần chỉnh sửa cuối:
Upvote 0
Mình bật lên nó thấy cái hình này, rồi đến hình này

Capture.JPGCapture1.JPG
 
Upvote 0
Làm thế nào để xuất ra file .exe thế Kiều Mạnh
 
Upvote 0
Chào cả nhà,
Hiện mình đang vướng như sau: Mình viết 1 đoạn code trong excel để nó chuyển sang cửa sổ của phần mềm quản lý rồi yêu cầu download dữ liệu bằng hàm sendkeys. Sau đó phần mềm quản lý sẽ cho tải xuống dữ liệu dạng file excel. Và code sẽ tự chay khi sự kiện worksheet deactivate.
Tuy nhiên, việc chuyển đổi giữa các cửa sổ xem ra không được ổn lắm vì phần mềm quản lý bị show lên màn hình.

Mình nhờ mọi người sửa giúp đoạn code để nó có thể sendkey sang phần mềm quản lý mà không yêu cầu phần mềm đó hiện lên. (như kiểu sendkey ngầm ấy).

THanks
Ah mà đoạn code của mình như sau:


Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Const GW_HWNDNEXT = 2
Private Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long



Sub ConnectHG_FG()
Static chk As Boolean
Dim i As Long
Dim t1, t2 As String
Dim hwnd
t1 = Format(Now, "yymm") & "01"
t2 = Format(Now, "yymmdd")
'StopClock
For i = 51 To 74
If Format(Now, "hh:mm:ss") = Format(Sheet1.Cells(i, 3), "hh:mm:ss") Then
Do
hwnd = IIf(chk, FindWindow(vbNullString, "System HG ver 2.0 *** TOKYO ***@Inventory List "), Application.hwnd)
ShowWindow hwnd, 3
BringWindowToTop hwnd
chk = Not chk
Loop Until hwnd = FindWindow(vbNullString, "System HG ver 2.0 *** TOKYO ***@Inventory List ")
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "%VIL", True
Application.Wait (Now + TimeValue("0:00:8"))
Application.SendKeys "^{TAB}", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "{TAB}", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys " ", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "{F2}", True
Application.Wait (Now + TimeValue("0:00:1"))
Application.SendKeys "~", True
Goback
End If
Next
End Sub

Bạn ơi mình đang cần 1 ứng dụng same same thế này có thể giải thích giúp mình 1 chút đoạn code trên được không. mình đã inbox rồi
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom