PDA

View Full Version : [Q] Thử thách cho các bạn đây



everlasting
19-11-2002, 13:27
Cho mình hỏi có bạn nào biết viết đoạn code dùng để fill mấy cái blank không.
Ví dụ khi vào menu run của windows nó sẽ có 1 dòng blank để bạn điền tên chương trình vào, còn bây giờ mình đang tìm đoạn code để tự nó fill đoạn blank đó mà không cần phải gõ.
Các bạn có thể dùng Java, C, C++ hoặc VB cũng được

dtt_vn
19-11-2002, 23:17
bạn nói gì mình không hiểu?

everlasting
20-11-2002, 13:05
ý mình nói đó là 1 chương trình khi mình chạy sẽ tự động điền ký tự vào cái dialog box

Allbegins
22-11-2002, 00:34
Thử thách này lớn lắm và ứng dụng của nó là gì vậy?
Trong C,C++,VB thì mình thấy có thể làm được đấy. Còn trong Java thì mình không biết thế nào? Có gì bạn Post 1 bài tương tự bài này bên box Java nha. Để hy vọng có câu trả lời đích đáng.

Quay lại với ý tưởng của everlasting . Bạn vẫn chưa nói rõ thời điểm Fill cái Blank. Số lượng các Blank.
Có phải ý everlasting là
- Chương trình chạy Hooking để chờ các Handle là Textbox (edit control) và cứ thế gặp anh nào là TextBox thì tặng cho ảnh 1 dòng Text?
Nếu đúng vậy thì thảo luận tiếp ... còn không thì xin everlasting làm rõ ý hơn hơn nữa ...

everlasting
01-12-2002, 00:17
đúng rồi giỏi wá, allbegins hiểu ý mình đấy, cứ thấy text box nào hiện ra là tặng cho nó vài dòng text

Nicky
01-12-2002, 10:13
Không dễ đâu há...nhưng mình nghĩ có thể dùng kĩ thuật Hook để thực hiện nhưng nói thiệt là chưa có ý tưởng gì hết...mọi người cho ý kiến đi

subzero
02-12-2002, 12:00
Dùng các hàm API đó :
Hàm GetForegroundWindow để lấy hWnd của Windows đang có Focus.
Hàm FindWindowEx để tìm các Child Windows (textbox,label..)
Hàm GetClassName lấy tên các Child (VD : textbox = ThunderTextBox)
Hàm SendMessage để set Text cho textbox or Combo

Với các hàm này bạn có thể fill blank cho bất cứ textbox trong Window đang có Focus.

Tôi đã làm 1 VD để Fillblank bất cứ textbox or combo = chữ "hello"
Bạn hãy tạo 1 Form trong đó có 1 timer tên là Timer1. Sau đó Paste đoạn Code này vào, chạy và mở Run Dialog và xem.


Option Explicit
Private Declare Function GetForegroundWindow Lib "user32" () As Long
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 GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_SETTEXT = &HC

Private Sub Timer1_Timer()
Dim M, N, L
Dim S As String * 255
Dim St As String * 5
St = "hello"
M = GetForegroundWindow
N = 0
Do
N = FindWindowEx(M, N, vbNullString, vbNullString)
L = GetClassName(N, S, 255)
If InStr(1, S, "TextBox") <> 0 Or InStr(1, S, "ComboBox") Then
SendMessage N, WM_SETTEXT, ByVal CLng(0), ByVal St
End If
Loop Until N = 0
End Sub

butchimau
11-04-2008, 15:28
Dùng các hàm API đó :
Hàm GetForegroundWindow để lấy hWnd của Windows đang có Focus.
Hàm FindWindowEx để tìm các Child Windows (textbox,label..)
Hàm GetClassName lấy tên các Child (VD : textbox = ThunderTextBox)
Hàm SendMessage để set Text cho textbox or Combo

Với các hàm này bạn có thể fill blank cho bất cứ textbox trong Window đang có Focus.

Tôi đã làm 1 VD để Fillblank bất cứ textbox or combo = chữ "hello"
Bạn hãy tạo 1 Form trong đó có 1 timer tên là Timer1. Sau đó Paste đoạn Code này vào, chạy và mở Run Dialog và xem.


Option Explicit
Private Declare Function GetForegroundWindow Lib "user32" () As Long
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 GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_SETTEXT = &HC

Private Sub Timer1_Timer()
Dim M, N, L
Dim S As String * 255
Dim St As String * 5
St = "hello"
M = GetForegroundWindow
N = 0
Do
N = FindWindowEx(M, N, vbNullString, vbNullString)
L = GetClassName(N, S, 255)
If InStr(1, S, "TextBox") <> 0 Or InStr(1, S, "ComboBox") Then
SendMessage N, WM_SETTEXT, ByVal CLng(0), ByVal St
End If
Loop Until N = 0
End Sub

Chào tất cả, tôi là thành viên mới
Tôi có một thắc mắc chưa tìm ra lời giải đáp; Rằng là trong VB, mỗi control đều có một tên, ví dụ một textbox được đặt tên txtNoiDung, vậy khi chạy chương trình, có thể dùng hàm API nào để lấy tên textbox này (txtNoiDung)
Mong các đàn anh giúp sức.

vtnphong
11-04-2008, 15:30
hix, mệt quá. Cái đống API này là lý do mà mình bỏ VB sang học Java

butchimau
14-04-2008, 10:52
hix, mệt quá. Cái đống API này là lý do mà mình bỏ VB sang học Java

Chào bạn, vậy bạn có thể cho mình xin đoạn code Java để có thể lấy được tên control không vậy. CÁm ơn nhiều.

The Old Man
14-04-2008, 11:02
Các website bây giờ không dại dể mấy cái gettext control cho các tay muốn tự động hóa điền các form "đăng nhập" với mưu đồ gởi các quảng cáo đồi trụy hoặc quảng cáo công ty thương mải cá nhân. Chương trình không đủ thông minh đọc được các "Hình Chữ".
Không biết là "Vỏ quýt nào dầy" hay "Móng tay nào nhọn"
Còn mấy cái gettext từ các control thì hầu như các ngôn ngử hiện đại đều có hết.