1樓:狂族魔帝
沒想法,要不改成發keydown+keyup
vb用sendmessage傳送中文
2樓:匿名使用者
你要傳送的目標是一個文字框麼?是的話就用settext,wparam填0,lparam填你那個中文串的變數。
如果目標不是文字框,可能就要找其他的訊息了。
另外,這類操作有的可以不用sendmessage的,比如setwindowtext api封裝了一種傳送settext message的情況。
3樓:匿名使用者
使用wm_settext 訊息 wm_char 是單個字元
public const wm_settext = 12
declare function sendmessage lib "user32" alias "sendmessagea" (byval hwnd as long, byval wmsg as long, byval wparam as long, lparam as any)
窗體中dim i as long
dim s as string
s = "你要輸入的文字"
i = sendmessage(hwnd, wm_settext, 0, byval s)
另 樓上兩位說直接使用setwindowtext 這個函式如果是本地程序可以使用
如過是其他程序則只能使用sendmessage
這個是msdn原話
if the target window is owned by the current process, setwindowtext causes a wm_settext message to be sent to the specified window or control. if the control is a list box control created with the ws_caption style, however, setwindowtext sets the text for the control, not for the list box entries.
to set the text of a control in another process, send the wm_settext message directly instead of calling setwindowtext.
*********************************************=
declare function sendmessage lib "user32" alias "sendmessagea" (byval hwnd as long, byval wmsg as long, byval wparam as long, lparam as any) as long
我把宣告寫錯了 拉了點東西 呵呵
4樓:匿名使用者
頂樓上,建議用setwindowtext api函式
向一個知道控制代碼的視窗傳送鍵盤訊息,用sendmessage裡面的wm_char可以但是為什麼wm_keydown接收不到,呢
5樓:匿名使用者
接收沒什麼任何問題
procedure mm(var msg:tmessage);message wm_keydown;
procedure tdemo.mm(var msg: tmessage);
begin
showmessage('123');
end;
procedure tdemo.speedbutton1click(sender: tobject);
begin
postmessage(handle,wm_keydown,vk_return,0);
end;
用vb**使用 sendmessage 傳送字串到某程式特定視窗
6樓:
最好用 spy++ 之類的軟體檢視那個視窗的類名以及上面該控制元件的 id,使用 findwindowex 這個 api 函式根據類名來查詢視窗控制代碼,使用 getdlgitem 根據視窗控制代碼和該控制元件 id 獲取控制元件控制代碼,然後傳送訊息給這個控制元件才行。wm_settext 訊息傳送給不同視窗效果不一樣的,發給帶標題的視窗的話肯定是改變標題。
7樓:匿名使用者
你要用這個控制元件的控制代碼,而不是那個程式視窗的控制代碼。
vb 中 使用 sendmessage之類的api函式(不**滑鼠動作)向其他程式的按鈕傳送單擊命令
8樓:匿名使用者
引數取個 與或運算可以
9樓:匿名使用者
sendmessage(hwnd, wm_command, 0, 0);
好久不用windows了,不知道對不對,你試試看吧
python用sendmessage函式向其他程式的編輯框(當前啟用視窗,並且在活動游標處)內傳送 50
10樓:匿名使用者
這就是個windows sdk的程式設計問題
#coding:utf-8
from ctypes import *
wm_settext = 0x000c
def changeactivewindowttile():
hwnd=windll.user32.findwindoww(u"notepad",u"無標題 - 記事本")
if (windll.user32.iswindow(hwnd)):
windll.user32.sendmessagew(hwnd,wm_settext,none,u"我是標題")
changeactivewindowttile()
我已經得到視窗上句按鍵的控制代碼,怎麼用sendmessage,傳送回車,賜教
11樓:
如果是一個按鈕的話,那麼直接傳送一個點選的訊息即可:
sendmessage(hwnd, bm_click, 0, 0);
如果一定要傳送 enter 訊息,可以這樣:
sendmessage(hwnd, wm_keydown, vk_return, 0);
sendmessage(hwnd, wm_keyup, vk_return, 0);
hwnd 代表按鈕的控制代碼。
12樓:莫納的絲絨
先貼一下sendmessage 的**(經vb6.0測試通過,直接複製套用就可以)
'先宣告呼叫api
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
sendmessage hwnd,vbkeyreturn,0,0
個人不用sendmessage,覺得postmessage比較實在
那個那個。。如果是後臺的話建議用postmessage,我把自動生成掃描碼的函式也發給你,全都複製在窗體**裡就可以。這只是比較簡單的雛形,如果你是針對遊戲的話,有些遊戲對於傳送回車鍵會比較麻煩,不是的話就不用多花時間啦。
private declare function postmessage lib "user32" alias "postmessagea" (byval hwnd as long, byval wmsg as long, byval wparam as long, byval lparam as long) as long
鍵碼宣告
postmessage chwnd, wm_keydown, vbkeyreturn, makekeylparam(vbkeyreturn, wm_keydown)
private function makekeylparam(byval virtualkey as long, byval flag as long) as long
dim s as string
dim firstbyte as string 'lparam引數的24-31位
if flag = wm_keydown then '如果是按下鍵
firstbyte = "00"
else
firstbyte = "c0" '如果是釋放鍵
end if
dim scancode as long '獲得鍵的掃描碼
scancode = mapvirtualkey(virtualkey, 0)
dim secondbyte as string 'lparam引數的16-23位,即虛擬鍵掃描碼
secondbyte = right("00" & hex(scancode), 2)
s = firstbyte & secondbyte & "0001" '0001為lparam引數的0-15位,即傳送次數和其它擴充套件資訊
makekeylparam = val("&h" & s)
end function
vb中的if語句,VB中的If語句
荀曾顏念雁 檢測事件是在文字框中的change事件中判斷,也就是說只要文字框有改變就檢測!如果把其中的 and改寫成 or就可以判斷其中一個文字是否為空!private subtext1 change 判斷文字框最快的速度還是判斷它的長度是否為0iflen text1.text 0 andlen t...
vb中的UBound的問題,VB中ubound()是什麼意思啊?
先說多維陣列 在一維陣列中,我們例如說從桌子左邊到右邊,每1cm為一個單位,可以有陣列 長度 i 這個i從0到120 在二維陣列中,我除了左右,我們有按照前後,每1cm為一個單位就有了陣列 桌面 i,j 這個1從0到120,j從0到60 在三維陣列中,我們除了前後左右,再加上上下,從下到上也每1cm...
vb中cint與int區別,VB中CInt與Int區別
一 主體不同 1 cint 返回表示式,此表示式已被轉換為 integer 子型別的 variant。2 int 整數資料型別的資料 是表示某種數學整數 範圍的資料型別。二 處理過程不同 1 cint 將其四捨五入為最接近的偶數。例如,0.5 被四捨五入為 0,而1.5 被四捨五入為 2。2 int...