|
下記のコードで文字をコピーしてNを押すとエクセルの最終行に貼付け、NキーでB列の最終行に貼付け、SHIFTを押すとIEのタイトルバークリック、ALTキーを押すとクリップボードに文字がなければ、メモ帳をクリック、クリップボードに文字があればコピーしたのを貼付けという処理をしたいのですが、クリップボードに文字がある状態でALTキーを押してメモ帳に貼付けした後、SHIFTを押してもIEのタイトルバーをクックする処理にならず反応がなく、クリップボードに文字がない状態でALTキーを押してメモ帳をクリックする処理にならず反応がありません。
スクリプト起動後、クリップボードに文字がある状態でALTキーを押さず、SHIFTキーやALTキーでのメモ帳クリックとかも問題なくできています。 エクセルの最終行貼付けは、問題なくできています。したい処理がクリップボードに文字がある状態でALTキーを押した後であっても、SHIFTキーやALTキーの処理させたいのですができません。 どこが間違っているのでしょうか?
excel2 = GETACTIVEOLEOBJ("Excel.Application") o_sheet = excel2.ActiveSheet
yA = sub_getBlankRowNumber1a(o_sheet, 1) //A列の現在行(空欄行) yB = sub_getBlankRowNumber1a(o_sheet, 2) //B列の現在行(空欄行)
while True sleep(0.2) ifb getkeystate(VK_N) then //VK_ADD x = 1 elseif getkeystate(VK_M) then //VK_MULTIPLY x = 2 elseif getkeystate(VK_SHIFT) then //メモ帳移動 sethotkey(VK_SHIFT, MOD_SHIFT, "proc2z")
elseif getkeystate(VK_ALT) then //VK_MULTIPLY x = 3 sethotkey(VK_ALT, MOD_ALT, "proc1z")
else continue endif ss = GETSTR(0) ifb (ss <> "") //クリップボードにある場合のみ処理する ifb (1 = x) then y = yA Excel2.ActiveSheet.Cells[y, x].Value = ss y = y + 1 yA = y elseif (2 = x) then y = yB Excel2.ActiveSheet.Cells[y, x].Value = ss yy = y + 1 yB = y elseif (3 = x) then SENDSTR(0, "") // クリップボードをクリア else continue endif endif wend
procedure proc1z
a=getstr(0) a=length(a)
if a=0 then nID =GETID("無題 - メモ帳","Notepad")//ウィンドウ指定
MMV(STATUS(nID, ST_CLX)+STATUS(nID, ST_CLWIDTH)/2, STATUS(nID, ST_CLY)+STATUS(nID, ST_CLHEIGHT)/2) else ida = GETID("メモ帳")
MOUSEORG(GETCTLHND(ida,"edit"), 2) tesa = GETSTR(0) SENDSTR(ida,tesa+"<#CR>") endif
fend
procedure proc2z
id1=getid("Internet Explorer") x1 = status(id1, ST_x) + status(id1, ST_WIDTH) / 2 y1 = status(id1, ST_Y) + 10 btn(LEFT, CLICK, x1, y1) fend
//下から上に探して最初の空欄がある行番号を返す function sub_getBlankRowNumber1a(oSheet, iColumnNumber) dim i_bottomRow = oSheet.Rows.Count dim o_range = oSheet.Cells(i_bottomRow, iColumnNumber) dim xlUp = -4162 o_range = o_range.End(xlUp) //Ctrl + ↑ と同じ操作 ifb (empty <> o_range.Value) then //空欄でなければ o_range = o_range.Offset(1, 0) //一つ下のセル endif result = o_range.Row fend
|
No.4346 2017/08/22(Tue) 23:37:45
|
☆ Re: IEのサイトとメモ帳とエクセルを開いている状態で特定のキーを押す事で特定の処理をさせる方法 / miles |
|
|
MOUSEORGを外したらどうですか? SENDSTR(文字列の送信)だけなら、MOUSEORG(メモ帳に直接送る)はいらないでしょう。 その後のクリックも正常になると思う。
ida = GETID("メモ帳") // MOUSEORG(GETCTLHND(ida,"edit"), 2) tesa = GETSTR(0) SENDSTR(ida,tesa+"<#CR>")
|
No.4363 2017/08/25(Fri) 11:10:45
|
|
☆ Re: IEのサイトとメモ帳とエクセルを開いている状態で特定のキーを押す事で特定の処理をさせる方法 / ゆう |
|
|
miles様、MOUSEORG外したら希望通りの処理ができました。 難しく考えすぎていたようです。 ありがとうございます、助かりました。
|
No.4366 2017/08/25(Fri) 12:37:22
|
|