1. VB編寫按鍵程序.
sendkeys
vbs SendKey用法
簡單說,這個命令就是模擬鍵盤操作,將一個或多個按鍵指令發送到指定Windows窗口來控制應用程序運行,其使用格式為:
object.SendKeys string
"object":表示WshShell對象
"string":表示要發送的按鍵指令字元串,需要放在英文雙引號中.
1.基本鍵
一般來說,要發送的按鍵指令都可以直接用該按鍵字元本身來表示,例如要發送字母"x",使用
WshShell.SendKeys "x" 即可.
也可直接發送多個按鍵指令,只需要將按鍵字元按順序排列在一起即可.例如,要發送按鍵"cfan",可以使用" WshShell.SendKeys "cfan" ".
2.特殊功能鍵
對於需要與Shift、Ctrl、Alt三個控制鍵組合的按鍵SendKeys使用特殊字元來表示:
特殊控制鍵 特殊字元
Shift +
Ctrl ^
Alt %
如要發送的組合按鍵是同時按下Ctrl+E,需要用" WshShell.SendKeys "^e" "表示,
如果要發送的組合按鍵是按住Ctrl鍵的同時按下E與C兩個鍵,這時應使用小括弧把字母括起來,書寫格式為" WshShell.SendKeys "^(ec)" ".這里要注意它與" WshShell.SendKeys "^ec" "的區別,後者表示組合按鍵是同時按住Ctrl和E鍵,然後松開Ctrl鍵,單獨按下"C"字母鍵
由於"+"、"^"這些字元用來表示特殊的控制按鍵了,如何表示這些按鍵呢?只要用大括弧括住這些字元即可.例如,要發送加號"+",可使用" WshShell.SendKeys "{+}" ".另外對於一些不會生成字元的控制功能按鍵,也同樣需要使用大括弧括起來按鍵號名稱,例如要發送回車鍵,需要用" WshShell.SendKeys "{ENTER}" "表示,發送向下的方向鍵用" WshShell.SendKeys "{DOWN}" "表示.
小提示
如果需要發送多個重復的單字母按鍵,不必重復輸入該字母,SendKdys允許使用簡化格式進行描述,使用格式為"{按鍵 數字}".例如要發送10個字母"x",則輸入" WshShell.SendKeys "{x 10}" "即可.
3.翻譯上手實例
" WshShell.SendKeys "^{ESC}u" "這句翻譯為:按下Ctrl+Esc組合鍵(相當於按Win鍵)打開"開始"菜單,按著按U鍵打開"關機"菜單.
---Just Do It---------------------------------
讓VBS腳本自動在詞本中輸入一行文字"Hello, welcome to cfan".
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 200
WshShell.AppActivate " 無標題 - 記事本 "
WshShell.SendKeys "hello, welcome to cfan"
我們最常用的記事本沒有Word、WPS那樣的自動定時存檔功能,其實利用VBS腳本再加上SendKeys命令,就能彌補這個遺憾.打開記事本,輸入以下內容(以容易描述和分析,把代碼分為四個部分):
'第一部分:定義變數和對象
Dim WshShell, AutoSaveTime, TXTFileName
AutoSaveTime=300000
Set WshShell=WScript.CreateObject("WScript.Shell")
TXTFileName=InputBox("請輸入你要創建的文件名(不能用中文和純數字):")
'第二部分:打開並激活記事本
WshShell.Run "notepad"
WScript.Sleep 200
WshShell.AppActivate "無標題 - 記事本"
'第三部分:用輸入的文件名存檔
WshShell.SendKeys "^s"
WScript.Sleep 300
WshShell.SendKeys TXTFileName
WScript.Sleep 300
WshShell.SendKeys "%s"
WScript.Sleep AutoSaveTime
'第四部分:自動定時存檔
While WshShell.AppActivate (TXTFileName)=True
WshShell.SendKeys "^s"
WScript.Sleep AutoSaveTime
Wend
WScript.Quit
將其保存為記事本.vbs,以後要使用記事本時,都通過雙擊這個腳本文件來打開.
程序翻譯
這個腳本的基本思路是定時向記事本發送Ctrl+S這個存檔組合鍵.
第一部分:定義了腳本中需要用到的變數和對象."AutoSaveTime"變數用來設置自動存檔間隔,單位為毫秒,這里設置為5分鍾."TXTFileName"變數通過輸入框取得你要創建的文本文件名稱.
第二部分:運行記事本,對於Windows本身提供的程序,比如計算器等,可直接在"WshShell.Run"後輸入程序名稱,如"calc"對於非系統程序,則可輸入完全路徑,但要注意使用8.3格式輸入,比如" "D:\Progra~1\Tencent\QQ.exe" "
第三部分:這里用SendKeys命令執行了這樣的操作流程(請注意每個操作之間延時命令的使用):
在記事本中按Ctrl+S組合鍵→彈出保存文件的窗口→輸入文件名→按Alt+S組合鍵進行保存(默認保存在"我的文檔"目錄).
第四部分:定時存檔的關鍵,通過"While......Wend"這個當條件為"真"時循環命令,實現自動存檔代碼" WshShell.SendKeys "^s" "和定時代碼" WScript.Sleep AutoSaveTime "的重復執行.因為不能讓這個定時存檔循環一直執行,退出記事本後,必須自動退出腳本並結束循環,所以設計了一個循環判斷條件" WshShell.AppActivate TXTFileName=True ",當記事本運行中時,可以激活記事本窗口,這個條件運行結果為"True",定時存檔循環一直執行,退出記事本後,腳本無法激活記事本窗口,就會路出循環,執行"Wend"後面的"WScript.Quit"退出腳本.
---Just Do It---------------------------------
有款軟體叫"QQ多賬號自動登錄器",它有記住QQ賬號和密碼,從而幫你用指定QQ號碼自動登錄,特別適合有多個QQ賬號的朋友.其實利用VBS腳本你完全可以DIY一個.請到http://www.newhua.com/cfan/200419/vbs.rar下載腳本實例.其中有一個雙QQ號碼自動登錄的腳本,請對照其中的解釋將其修改為適合自己的QQ自動登錄腳本.
請製作一個腳本,在你復制了一段文字後,只要雙擊運行這個腳本,就會自動打開記事本,並自動將復制的文字粘貼進來.
-----------------------------------------------
VBS中Sendkey鍵盤對應的碼表
Key Code
------------------------------
Shift +
Ctrl ^
Alt %
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {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}
2. wincc使用一個按鈕控制兩個變數。 可以用C或VB
可以用VB腳本做,我理解您的意思是:
按下按鈕,給變數NewTag_1賦1,給NewTag_2賦0
再按下按鈕,給變數NewTag_1賦0,給NewTag_2賦1
以下是我按照上面的理解寫的,調試已經通過,希望對您有所幫助
Dim a,b
Set a=HMIRuntime.Tags ("NewTag_1")
Set b=HMIRuntime.Tags ("NewTag_2")
a.read
b.read
If a.value=0 Then
a.write 1
b.write 0
Else
a.write 0
b.write 1
End If
3. VB 如何實現按一個鍵產生一個變數,另外一個按鈕檢測到這個變數並產生響應
雖然只有5分,但也隨手給你寫一下,不知道能不能滿足你的要求
寫個類 clsTest
event IDChanged
event IDChanging(OldID as integer,NewID as integer)
dim varID as integer
property get ID() as integer
id = varID
end property
property let ID(v As integer)
if varid <> V then
raiseevent IDChaging(varid,v)
varid=v
raiseevent IDChaged
endif
end property
以下為窗體代碼
private withevents c as clsTest
sub form_load ()
set c = new clsTest
end sub
sub cmd1_click()
static s as single
s=s+0.5
c.ID= s
end sub
sub cmd2_click()
msgbox c.id
end sub
sub c_IDChanged()
cmd2.value=true '按com2
end sub
4. VB6中如何通過一個按鈕及變數控制其他按鈕顯示與關閉
'添加一個按鈕,名稱(不是caption)為cmdDynamic,index為0,visible為false。
OptionExplicit
DimisCreateAsBoolean
'動態創建按鈕數組過程,cmd為在那個按鈕的按鈕下創建按鈕,n為要創建的按鈕數。
SubCreateDynamic(cmdAsCommandButton,ByValnAsInteger)
Dimi%
WithcmdDynamic(0)
.Caption=cmd.Caption:.Movecmd.Left,cmd.Top,cmd.Width,cmd.Height
EndWith
Fori=1Ton
LoadcmdDynamic(i)
WithcmdDynamic(i)
.Movecmd.Left,cmdDynamic(i-1).Top+cmd.Height,cmd.Width,cmd.Height
.Caption=cmdDynamic(0).Caption&"第"&i&"節":.Visible=True
EndWith
Nexti
EndSub
'刪除動態按鈕過程
SubDeleteDynamic()
Dimi%:Fori=1TocmdDynamic.UBound:UnloadcmdDynamic(i):Nexti
EndSub
'動態按鈕響應單擊事件過程
PrivateSubcmdDynamic_Click(IndexAsInteger)
MsgBox"您選擇的是"&cmdDynamic(Index).Caption&"的內容"
EndSub
'-----------------章節按鈕過程-----------------------------------------
PrivateSubCommand1_Click()'第一章
CallCreateDynamic(Command1,5):isCreate=True
EndSub
PrivateSubCommand2_Click()'第二章
CallCreateDynamic(Command2,8):isCreate=True
EndSub'餘下章節自己添加。
5. VB中實現多個按鈕控制同一個Text里顯示不同內容(在線等)
暈。 你兩天就會上手了。
我學了一周都沒上手,你太強大了。
最後我還是學易語言了。不過我懂點編程方面的知識。
可以用變數。就是
text=變數+1
text1=變數+2
就這樣,就可以了。