AutoHotkey スレッド part25 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>494 です。 >>500 試しに RunAs, %USERNAME%, %PASSWORD% Run, explorer `/select`,`"%filePath%`" RunAs とやっていたところを、単に Run, explorer `/select`,`"%filePath%`" と書き換えてみましたが、どちらとも新規ウィンドウで開いてしまいます。 コマンドプロンプトからやってみても同じでした。 ファイル名を指定して実行のexeを見てみたところ、explorer.exeとなっていた のでこれが原因ではないでしょうか? すみません、以下の場合に複数のキーの状態をまとめて指定する事は可能でしょうか?。 If GetKeyState("RButton", "P") msgbox, 押されている else msgbox, 押されていない この部分を If GetKeyState("RButton" "MButton" "XButton1", "P") とか If GetKeyState("RButton" and "MButton" and "XButton1", "P") とか If GetKeyState("RButton" || "MButton" || "XButton1", "P") とか If GetKeyState("RButton" or "MButton" or "XButton1", "P") とか素人なりにやってみましたが、全くダメでした。 宜しくお願いします。 やってないから動くかわかんないけど、普通に考えるなら If( GetKeyState("RButton", "P") or GetKeyState("MButton", "P") or GetKeyState("XButton", "P") ) msgbox Hit とか >>503 キタ━━━━━━(゚∀゚)━━━━━━ !!! キタ━━━━━━(゚∀゚)━━━━━━ !!!!! 顔射感激雨あられぇ! 本当にありがとうございました! >>503 「and」や「||」や「or」を知ってるのに書式が分からないって・・・ wikiとかhelp見ないで適当にやってできないから質問した感がもの凄くあるんだが・・・ >>505 これが素人AHK使いの現実何です。 お察し下さい。 ルールブックがあってもその見方がわからんってレベルだろ でもちょっとやれば、すぐにわかるようになるよ andとorは数学の集合でやるからプログラム素人でもわかるよ。 「かつ」と「または」のことだ。縦線は初めてみたときわからんかったので ヘルプみたが。 >>499 です。 前述した方法で行うとAHK起動後、約5分くらいで下記のエラーが出ます。 Error.File:C:\Apps\MouseGestureL\Config\MG_User.ahk Error.Line:771 Error.Message:0x8013150B - Source: mscorlib Description: オブジェクト '/62092dc6_d0c8_47dd_803a_d87384c15e0f/sqpempia+y4xaa3s532qntda_2.rem' が切断されたか、サーバーに存在しません。 HelpFile: (null) HelpContext: 0 Error.What: Error.Extra: ActiveTab aw := qs.ActiveWindow at := aw.ActiveTab at.SelectedItems := "Book2.xlsx" を下記のように修正したりしましたがエラーが出ます。 qs.ActiveWindow.ActiveTab.SelectedItems := fileName どうもタイムアウトエラーのようなのですが、下記のページの解決策のように AHKで記述する方法がわかりません。 http://bbs.wankuma.com/index.cgi?mode=al2& ;namber=21484&KLOG=41 どなたか解決策をご存知の方、ご教授お願いします。 Dllがよくわかりません。詳しく説明してるサイトとかないですか >>512 VisualStudio VC++とかやらないとその世界は難しいよ winapi関係はほぼVB(A)で覚えたわ あっちもDeclare宣言必要だから型とか調べるのによくVBの解説サイト見に言ってたわ 今だとMSDN直に見たほうが早いんだろうけど Mouseclick left Sleep,aaa mouseclick left Sleep,bbb . . Gosub,A でgosubの処理時間をループするsleepで調整したいのですが Gosubの処理時間を計る方法ありませんか A_TickCountとかA_Nowとか見て処理開始と処理終了で引き算すればいいよ >>517 ; A_TickCount精度10ms StartTime := A_TickCount Sleep 1000 MsgBox % A_TickCount - StartTime " (ms)" ; ナノ秒の精度が欲しいなら高分解能タイマ DllCall("QueryPerformanceCounter", "Int64*", CounterBefore) Sleep 1000 DllCall("QueryPerformanceCounter", "Int64*", CounterAfter) MsgBox % CounterAfter*1000 / CounterBefore " (ms)" return StartTime := A_TickCount Gosub,A ElapsedTime := A_TickCount - StartTime MsgBox, %ElapsedTime% milliseconds have elapsed. これでも可? お二人が答えてくれてました。 ありがとうございます! >>511 ComObjCreate("QTTabBarLib.Scripting") を使って、使う度に毎回インスタンスを取得してますか? グローバル変数に一度取得したあと、使いまわしてたりしませんか >>511 です。 >>522 グローバル変数に代入してません。毎回取得してます。 後、mscorlib.dll ver 5.1.30514.0をダウンロードしSystem32フォルダへ投入した ところ、エラー内容が変わりました。下記のようになります。 --------------------------- Error in #include file "C:\Apps\MouseGestureL\Config\MG_User.ahk": 0x8013150B - Source: mscorlib Description: IPC ポートに接続できません。指定されたファイルが見つかりません。 HelpFile: (null) HelpContext: 0 Specifically: SelectedItems Line# 769: } 770: dirPath := MGU_GetDirFullPath(dirPath) 771: qs := ComObjCreate("QTTabBarLib.Scripting") 772: wnd := qs.ActiveWindow 773: qs.Open(dirPath) 774: if (file = TRUE) 774: { ---> 775: wnd.SelectedItems := fileOrDirPath 776: } 777: ObjRelease(qs) 778: } 780: { 781: Try 781: { 787: if (appName = null) Continue running the script? AHK起動から5分くらいたってから出るエラーって言うところが気になるんですけど どうでしょうか? 私の書いたソースを載せておきます。 MGU_OpenWithQTTabBar(fileOrDirPath, file){ if(file = TRUE){ fileName := MGU_GetFileNameFromPath(fileOrDirPath) dirPath := MGU_GetDirPathFromPath(fileOrDirPath) }else{ dirPath := fileOrDirPath } dirPath := MGU_GetDirFullPath(dirPath) qs := ComObjCreate("QTTabBarLib.Scripting") wnd := qs.ActiveWindow qs.Open(dirPath) if(file = TRUE){ wnd.SelectedItems := fileOrDirPath } ObjRelease(qs) } あと、qs.Open(dirPath)まではエラーなく進むんですけど、 wnd.SelectedItems := fileOrDirPath でエラーが出るんですよね〜。 理由がいまいち分かりません。 Chromeで何十ページも開いて、特定の文字(リンクになってる)をクリックする作業をしてるんですが、自動化したいです 特定の文字をクリックする方法があれば教えてください。 文字の場所はばらばらなので、場所指定のクリックは出来ません。 >>524 です。 結局、その箇所だけjsで対応することにしました。 原因は今も分からずです。 お騒がせしてすいませんでした。 >>525 1、最初に開くページをURLDownloadToFileでローカルにファイルとして落としていく 2、落としたファイルの中をLoop(file)、Loop,Readでループさせ、RegExMatch()で検索する 3、目的の文字列があったらRunでそのURLを開く >>527 自分には難しかったので、URLコピペして文字追加して貼り付ける方法で代用できました。 ありがとうございました。 お知恵拝借したく… getkeystateによってあるキーの押し下げ有無はとれますが そうでなく、「いま押し下げられてるキーを一覧で得る」ような方法はありますか? ホットキーなど使用していると、自分の環境だとわりと発行されたキーがそのまま残ったりします 今まではプログラム的にキー残りがないよう試行錯誤してましたが、単純に「物理的に、残ったそのキーをもう一回押す」と直ることに気づきました ちょうど、今押してるキーやマウスを画面表示させられるkbvというフリーソフトを見つけたので、それで一応対応はできなくはないのですが若干起動が重くて…なのでahk内でどうにか調べられたら良いなと思ったのです Win7です GUIでウインドウをたくさん作ると、左下のタスクバーのAHKのところにカーソルを持っていくと 作っただけのウインドウ数のタイトルがポップアップで出てきてしまいます 邪魔なので、これを出さないようにする方法ってありますか スクリプトは1つなので、1つのスクリプトに1つのポップアップのタイトルで十分だとおもうのですが >>529 実験してみたよ。 AHKのSetTimerでAltキーを監視してON/OFF表示させていて、 ついさっきたまたまAltを離しているのにAlt押しっぱなし状態になった。 しかし、AHKのGetKeyStateではOFF判定だった。 また同じ症状になった。 今度はON判定。 とりあえず、あてにならんわ。 529です、いろいろありがとうです キー押し下げ判定自体も精度アヤシイようだと、ちょっとアレですね 過度にahkでゴチャゴチャやらない方向で運用を見直すようにしてみます すり抜け自体体感してないからすり抜けるすり抜けるってのが何なのかすらわからん フックは?ディレイは?ちゃんとDown Up使ってる?Sleepも無茶な数値入れてない? よくわからんな Photoshopでマウスホイールのみで拡大縮小しようとして Alt Down Scroll Up Alt Up でやると、早くグリグリ回すと拡大しないときが数回に一回発生する。 Sleep入れてもダメ。 これがすり抜け? それそもそもの書き方がまずいんでは Alt押し込んでホイール離すを何度も何度も繰り返してるから操作のエミュレートになってない Alt押し下げた状態でホイール操作を待つっていうスクリプト書かないと >>539 キーやボタンと違ってホイールには押す/離すなんて判定は無いけど ホイール操作の何を待つんだ? wheel操作をalt downとalt upで挟めってこと loopで出来る >Alt押し込んでホイール離すを何度も何度も繰り返してる この文章からして意味不明だし とりあえず続けてもわかってくれそうになさそうだから帰ったらサンプルコード書くわ 「ホイール離すを繰り返す」→そんなことはしてませんよ なぜなら「ホイール離す」なんで動作は存在しないので そもそも質問者が何をやろうとしてるのか分かって無さそうだけど まあ>>538 も端折らずに自分が書いたコードそのまま貼った方がいいと思うけど >>544 的外れなサンプルとか要らんよ 俺は質問者でもなければコードなんて求めてないし ただお前の言う「ホイール離す」とは何のことだ?って聞いただけだし そもそも、Photoshopのオプションに「ホイールスクロールでズーム」という項目があるんだけどな。 AHKのすり抜け問題とは関係ないが Photoshop CS6 環境設定 - 一般 Photoshop CC 環境設定 - ツール にそれぞれ 「スクロールホイールでズーム」って項目あるよ チェック入れとけばAlt押さなくてもホイールだけでズームできる 釣りだったりして。 興味があったんで、541は見たいです。 すみません、538です。 出先なので、コードはうろ覚えなのですが、 実際はシフトとアルトを押しながらホイールを回す動作をしたいです。 Shift Down Alt Down Wheel Up(Down) Shift Up Alt Up で書いています。ゆっくり回す分には動作しますが、早く回すと抜けが発生すします。 >>539 が言うのはホイールを離すじゃなくてホイールを回すの間違いでは? ホイール操作を待つってスクリプトがよくわからないので、サンプルコード待ってます。 >>549 ありがとうございます。 バージョンが違うのでできるかはわかりませんが、それはそれで参考にさせて頂きます。 >>551 だからさ、それはahkのコードじゃないから質問する際にそういう中途半端な書き方は良くないぞって意味な で、本題だけど>>547 のオプション設定で済む話ならそれが一番いいだろうけど 余談になるがShiftやAltなど修飾キーならいちいちDownとかUpとか書かずとも WheelUp::Send, +!{WheelUp} だけでいいんじゃね? それでもすり抜けるならしょうがないね >>539 が言ってた「ホイール離す」は所詮そのレベルの勘違いだろうな 何を待つのかは未だによく分からんけど >>551 Wheel Up(Down) の前後に Sleep,50 を入れたらどうなる? >>552-553 失礼しました。 修飾キーでの記述では、そもそも全く動作しなかった記憶があります。 すり抜けも変な感じで、Shiftだけ押されてAltが押されないままホイールが回る動作をしたりします。 Sleepを入れて色々時間を調整すると、入れない時よりも失敗の頻度は改善されました。が、完全には対策できていません。 いやまぁ、使おうが使わまいが構わないけど、帰ったらサンプル書くよ 言いたいことが伝わってないのは気持ち悪い >>555 使い方がいまいちわからず、使ってませんでした… >>556 >>よろしくお願いしますm(_ _)m #NoEnv #InstallMouseHook ~*WheelDown:: ~*WheelUp:: wheel := A_ThisHotkey loop { If wheel contains ^,+,!,*,~,#,<,>,$ StringTrimLeft, wheel, wheel, 1 else BREAK } GetKeyState, state, LAlt If state = U send,{blind}{LAlt Down} sleep,30 send,{Blind}{{%wheel%} settimer,AltRelease,-200 Return AltRelease: send,{Blind}{LAlt up} Return すまんloop監視使うよりタイマー使ったほうが簡単だった 最初はloopで全体を監視してWheelを監視して回した分だけ変数にためて sendの回数部分に渡す予定だったけどややこしくなりそうだ 言いたかったのはこんな感じで、まずキーボード操作ならAltを押しっぱなしにしたままwheel操作をするはず その間Altは離さないはずなんだ これを簡単に書こうとして send,{LAlt Down}{Wheel up}{LAlt up} なんて書こうもんならログではホイール回すたびにAltキーが連打されることになる あ、ホットキーラベルの~は要らないわ。クセで書いちゃったけど >>562 質問者はサンプル待つつもりで「よろしく」って言ってるのに、横からしつこく揚げ足とりしてるあなたの方が頭冷やすべきでしょ >>564 横からしつこくもなにも俺は最初からその一点についてしか話してない それなのに一人で勝手に興奮してるだけ 間違いなら最初から間違い認めりゃいいだけなのにな キチガイなんだから 無視しとけよw なんでみんなからしつこいって 言われるかわからないんだから 冷やし中華はじめましたから!...冷やし中華はじめましたから!!! ワッチョイもIDも違う複数書き込みを >一人で >顔真っ赤 とか言い出したら要注意な >>558 ありがとうございます。 今外出中で試せないのですが、今夜やってみます。 #NoEnv #InstallMouseHook ; variable EtatWheelDown = 1 EtatWheelUp = 1 Check_EtatWheelDown = 1 Check_EtatWheelUp = 1 Loop, ; ( or SetTimer ) { if EtatWheelDown <> %Check_EtatWheelDown% ; Wheel Down is turn { Tooltip, Wheel Down is turn. Break } if EtatWheelUp <> %Check_EtatWheelUp% ; Wheel Up is turn { Tooltip, Wheel Up is turn. Break } Check_EtatWheelDown = %EtatWheelDown% Check_EtatWheelUp = %EtatWheelUp% } ~*WheelDown:: EtatWheelDown += 1 return ~*WheelUp:: EtatWheelUp += 1 return ちょっと探したらgetkeystateじゃないにしてもホイール回してるか回してないかの取得スクリプトならあった これでホイール離してる状態も取得できるな >>558 質問者です。 わざわざコードを書いて下さりありがとうございます。 今試してみたら動きました! なるほど、ホイール回す度にalt連打されると処理がおかしくなるのですね。(処理が完了する前に次の入力が来る?) ホイール回す間はalt押しっぱなしにするという方法は目から鱗でした。 アルゴリズムやコマンドの勉強にもなりました。これで長くAutohotkeyを愛用していけそうです。 重ねてお礼申し上げます。 あるファイルがあったとして、そのファイルが書き換えられたとき、それをトリガーにある処理をしたいのです どうしたらいいでしょうか タイマーで1秒おきとかにファイルのプロパティーを見ながら日付の変更確認とか、そんなことをしないと いけないのですか? ReadDirectoryChangesWとか使えばイベントドリブンにできるかもしれんけど 多分settimerでFileGetTimeし続けるほうが楽だと思う Windows10のデスクトップはahk_class Progmanですが、一度でもWin+Tabを押すとahk_class WorkerWになります。 これを強制的にahk_class Progmanに戻す事って出来ますか?。 できない 何故戻したいのかはわからないけど、同時に適用したいならClass判定のところをorでいいんじゃないの? v = aaatttaaa aは文字、tは数字 となっているとします。文字の長さ、数字の桁数は別に3ということではなく任意です この変数vから、数字のtttだけをとってくるにはどうしたらいいでしょうか RegExMatch()とかを使うのですか。 かなりややこしくなりそうですが すいません。これで出来ました NewStr := RegExReplace( ttl, "[^0-9]+", "") これでいいのかな。 一応、確認したところ出来ていそうです 数字の0-9ってなにか\を使った記法ってあったような 正規表現を調べるのを勧める loopでぶん回して取得する無理矢理な方法もなくはないけど ブラウザ(IE)上で、webに設定されたドロップダウンリストに 規定値(一番上)に選択→隣接リストで同じ処理…… を5回位繰り返させようとしています。 【処理】 start地点のコントロールを選択してからHotKeyを押して処理開始。 1.ControlGetFocus →どのコントロールでも、どのwebページでも 「Ineternet Explorer_server1」しか返ってこない。 2.Key(↑)を送ってリストを遡らせる →TABで次のコントロールに移るを繰り返す →Javascriptで監視されているようで、コントロールの value変更後の処理でFocusが外れてしまい、処理が継続できなくなる。 AutoHotKey無印を使っています。 AutoHotKeyでは、そもそもブラウザ上に展開したコントロールを 直接操作することはできないのでしょうか? >>590 >>591 ショートカットキーを使って、既存のブラウザのコントロールにアクセスしたいというのが もともとの願望でした。 (会社の基幹システムの提携作業をマクロ化したいという動機) 検索すると、HotKey制御ならAutoHotKeyらしいということがわかって、 いろいろ試行錯誤してみた次第です。 ずっとVBAで業務支援ソフトなんかを同僚のために作ってきたのですが、 HotKeyの制御はC#やVBなんかでもできるのでしょうか? 初心者ですが、VisualAtudioは最近ちょろっと触ってるので、 HotKeyを使ったブラウザ制御なんかを学べる環境を教えていただけると幸いです。 >>589 | IEウインドウを最大化 | IEを最前面表示固定 | 座標100,200 を左クリック | 1秒待つ | 座標100,220 を左クリック | 0.5秒待つ | 座標300,200 を左クリック | 1秒待つ | 座標300,220 を左クリック | ・・・ | IEを最前面表示固定解除 みたいなのにすればいいだろ #スクリプト動作中はマウス、キーボードを触らない AHKじゃなくても、マウスユーティリティー系で可能 openmausujiならソースが公開されているから、業務で使用も可能だろ >>589 テンプレにあるACC.ahkでDoDefaultActionでいいんじゃないかな それでできないならUI AutomationのSetFocus()でフォーカス合わせるぐらいしか思いつかないけど UI AutomationのほうもAutoHotKeyである程度使いやすいようにされたものがどっかにあったはず >>593 >>594 ありがとうございます。 レスが遅くなって申し訳ありません。 上記を参考に一度トライしてみます。 マウスのホイール操作全般(WheelUp WheelDown WheelLeft WheelRight)にキーを割り当てると、単純な a とか一文字でも 不定期に反応しなくなります すり抜けとかではなく全く反応しなくなるのですが、リロードすれば直ります 右クリック、左クリック、サイドボタンでは全く問題ないです 定期的にリロードするよう書き込んだ方が良いのか、それとも 他に何か原因があるのでしょうか? >>596 まず、余分なものをどんどん省いていって、それが再現する必要最低限のスクリプトにしてみましょう。 その結果、原因が分かって自分で解決できる場合もあるし、その最低限のスクリプトをここに書き込めば 誰かにヒントをもらえる確率が上がると思います。 >>597 WheelRight::send,a return これだけしか書いてないスクリプトでも急に受け付けなくなるのですが・・ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる