
撰寫B程式,如何實作下列功能?
1. 點擊“填寫”,把“B程式”的ABCD文本框中的內容,自動填寫到"A軟體"的ABCD文本框中,相對應。
2. 點擊“清除”,把“A軟體”的ABCD文本框清容。
各位大神! 小弟,在線坐等......
uj5u.com熱心網友回復:
最簡單的,用sendkeys函式 模擬鍵盤操作 往被激活的表單進行鍵盤輸入。如果要模擬滑鼠操作,那么需要取得具體要操作的坐標再用windows API發滑鼠操作訊息。要通用的,就是呼叫一系列windowsAPI,先找到需要操作的表單句柄,然后再在這個表單內找到具體的輸入框句柄,最后向輸入框發送訊息進行內容的調整。
建議先試試sendkeys能否解決你的問題。
https://www.cnblogs.com/demonxian3/p/6263948.html
uj5u.com熱心網友回復:
獲取輸入框句柄 應該是最簡單的uj5u.com熱心網友回復:
推薦使用軟體Spy4Winuj5u.com熱心網友回復:
推薦使用clswindow,簡單易用,專門處理此類問題uj5u.com熱心網友回復:
一種方法是:使用api查找A視窗句柄,然后獲取文本框的句柄,然后就可以在B程式中操作A視窗文本框啦。還有一種方法是:通過vb表單的Linktopic和LinkMode屬性來連接兩個表單,然后A視窗接收到B視窗的指令,做相關的操作,關于LinkTopic和LinkMode連接表單方法也很簡單,也叫DDE通訊,你在網上查一下吧,就相當于兩個表單的管道。實在不行,我給你做個例子。uj5u.com熱心網友回復:
他這是第三方軟體,所以DDE行不通。 估計樓主已經走了。。我寫下clswindow的代碼。就當是普及下它的用法了。clswindow用法介紹:http://blog.csdn.net/sysdzw/article/details/9083313
clswindow庫下載:https://download.csdn.net/download/sysdzw/9295969
原理就是根據句柄獲得視窗然后設定值,暫且當做樓主示意的視窗頂部的就是標題,且假設文本框類名叫Edit,使用clswindow的代碼如下:
Private Sub Command1_Click()
Dim w1 As New clsWindow
Dim w2 As New clsWindow
Dim a$, b$, c$, d$
w1.GetWindowByTitle "A軟體"
w2.GetWindowByTitle "B程式"
'獲取右邊視窗w2的4個值
a = w2.GetElementHwndByClassName("Edit", 1)
b = w2.GetElementHwndByClassName("Edit", 2)
c = w2.GetElementHwndByClassName("Edit", 3)
d = w2.GetElementHwndByClassName("Edit", 4)
'設定4個值到w1視窗中的四個文本框中
w1.SetElementTextByClassName "Edit", a, 1
w1.SetElementTextByClassName "Edit", b, 2
w1.SetElementTextByClassName "Edit", c, 3
w1.SetElementTextByClassName "Edit", d, 4
End Sub
uj5u.com熱心網友回復:
上述代碼有誤,更正:GetElementHwndByClassName修改為GetElementTextByClassName看方法名字就知道了,根據類名得到元素的文本內容。關于此類各個方法的說明:https://wenku.baidu.com/view/c983a463d1f34693dbef3e33.html
Private Sub Command1_Click()
Dim w1 As New clsWindow
Dim w2 As New clsWindow
Dim a$, b$, c$, d$
w1.GetWindowByTitle "A軟體"
w2.GetWindowByTitle "B程式"
'獲取右邊視窗w2的4個值
a = w2.GetElementTextByClassName("Edit", 1)
b = w2.GetElementTextByClassName("Edit", 2)
c = w2.GetElementTextByClassName("Edit", 3)
d = w2.GetElementTextByClassName("Edit", 4)
'設定4個值到w1視窗中的四個文本框中
w1.SetElementTextByClassName "Edit", a, 1
w1.SetElementTextByClassName "Edit", b, 2
w1.SetElementTextByClassName "Edit", c, 3
w1.SetElementTextByClassName "Edit", d, 4
End Sub
uj5u.com熱心網友回復:
樓主不知道去哪兒了。這玩意很簡單的,
二種方法,一種是SendMessage,一種是模擬鍵盤。
但實際做起來的時候,會有一些想不到坑。
這個我已經專門做了軟體,一個實作功能。一個設定。
企鵝五五零七三五零:5507350
uj5u.com熱心網友回復:
還可以用VB6自帶的SendKeys陳述句:SendKeys 陳述句
將一個或多個按鍵訊息發送到活動視窗,就如同在鍵盤上進行輸入一樣。
語法
SendKeys string[, wait]
SendKeys 陳述句的語法具有以下幾個命名引數:
部分 描述
string 必需的。字串運算式,指定要發送的按鍵訊息。
Wait 可選的。指定等待方式的 [email protected] 值。如果為 False(預設值),則控制元件在按鍵發送出去之后立刻回傳到程序。如果為 True,則按鍵訊息必須在控制元件回傳到程序之前加以處理。
說明
每個按鍵由一個或多個字符表示。為了指定單一鍵盤字符,必須按字符本身的鍵。例如,為了表示字母 A,可以用 "A" 作為 string。為了表示多個字符,就必須在字符后面直接加上另一個字符。例如,要表示 A、B 及 C,可用 "ABC" 作為 string。
對 SendKeys 來說,加號 (+)、插入符 (^)、百分比符號 (%)、上劃線 (~) 及圓括號 ( ) 都具有特殊意義。為了指定上述任何一個字符,要將它放在大括號 ({}) 當中。例如,要指定正號,可用 {+} 表示。方括號 ([ ]) 對 SendKeys 來說并不具有特殊意義,但必須將它們放在大括號中。在其它應用程式中,方括號有特殊意義,在出現動態資料交換 (DDE) 的時候,它可能具有重要意義。為了指定大括號字符,請使用 {{} 及 {}}。
為了在按下按鍵時指定那些不顯示的字符,例如 ENTER 或 TAB 以及那些表示動作而非字符的按鍵,請使用下列代碼:
按鍵 代碼
BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} 或 {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}或 ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} 或 {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
為了指定那些與 SHIFT、CTRL 及 ALT 等按鍵結合的組合鍵,可在這些按鍵碼的前面放置一個或多個代碼,這些代碼列舉如下:
按鍵 代碼
SHIFT +
CTRL ^
ALT %
為了說明在按下其它按鍵時應同時按下 SHIFT、CTRL、及 ALT 的任意組合鍵,請把那些按鍵的碼放在括號當中。例如,為了說明按下 E 與 C 的時候同時按下 SHIFT 鍵,請使用 "+(EC)"。為了說明在按下 E 的時候同時按下 SHIFT 鍵,但接著按 C 而不按 SHIFT,則使用 "+EC"。
為了指定重復鍵,使用 {key number} 的形式。必須在 key 與 number 之間放置一個空格。例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 鍵;{h 10} 則是指 10 次按下 H 鍵。
注意 不能用 SendKeys 將按鍵訊息發送到這樣一個應用程式,這個應用程式并沒有被設計成在 Microsoft Windows 中運行。Sendkeys 也無法將 PRINT SCREEN 按鍵 {PRTSC} 發送到任何應用程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/46866.html
標籤:API
