AutoHotkey スレッド part7at SOFTWARE
AutoHotkey スレッド part7 - 暇つぶし2ch488:名無しさん@お腹いっぱい。
09/03/20 18:11:28 Ie0QoNxm0
ああ、だめだ。あと下記も参考に
670 名前:665[sage] 投稿日:2008/06/06(金) 19:45:37 ID:89UJiJcz0
>>669
うあそういうことか

>>667
自レスも含みますが>666であったファイルの選択の状態を取得する他の方法を探したところ
ControlGetが使えそうなのでそれでやってみたテスト

~LButton::
MouseGetPos,MouseX,MouseY,WindowID,ClassNN,1 ; カーソル下の情報を取得(ClassNN以下いらないような
WinGet,DesktopID,,ahk_class Progman ; デスクトップのウィンドウIDを取得
ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる
If(A_TimeSincePriorHotkey<300 && DesktopID==WindowID && StateListView=="") ; デスクトップ上である&選択項目がない
Send,!{Numpad1}
return

アイコンのないところでダブルクリックをしたとき、イベントを乗っ取らないダブルクリックなので、
丁度よく最初のクリックの時点でデスクトップがアクティブになって選択状態が外れる
同じ方法でエクスプローラ・Openダイアログ等の余白をダブルクリックで上階層移動もできる
選択項目を利用するので MButton:: 等では途中に左クリック入れるとかしないとそのままではできない・・

489:名無しさん@お腹いっぱい。
09/03/20 18:41:45 oBtBrUgR0
>>486
レスありがとうございます。
~NumLock::pause
でできました^^

490:名無しさん@お腹いっぱい。
09/03/20 20:49:30 q1D8qFby0
へ~、UpperDirOneみたいなのが楽につくれるなぁ・・・と思ったけど

~LButtonでフォルダ移動の場合、項目がとれる前に移動が完了ちゃって
フォルダに移動した後にBackspace送っちゃって元通り・・・で意図したとおりに動かない
結局 ~ なしになったけどうまくいかんもんだねぇ

SetTitleMatchMode, RegEx

#IfWinActive, ahk_class CabinetWClass|ExplorerWClass
LButton::
 if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) {
  MouseGetPos,,,,classNN
  ControlGet, selected,List,Selected, SysListView321, A
  Send, % (classNN=="SysListView321" && !selected) ? "{BackSpace}" : "{LButton}"
 } else {
  Send, {LButton Down}
  KeyWait, LButton
  Send, {LButton Up}
 }
 return

491:名無しさん@お腹いっぱい。
09/03/20 20:54:15 w27aWi9q0
>>488,489
ありがとう!
月曜まで家に帰れないから試せないけど、帰ったらやってみる!

492:名無しさん@お腹いっぱい。
09/03/21 00:19:19 JP2qPQY00
某スレで盛り上がってたので書いてみました。
カーソルをくるくる回すとスクロールします。
URLリンク(lukewarm.s101.xrea.com)

493:名無しさん@お腹いっぱい。
09/03/21 00:26:44 g8LL/GxK0
>>492
どうやってAHKで再現しようか考えていたら・・・
ありがたく頂きます

494:名無しさん@お腹いっぱい。
09/03/21 00:28:23 ft3ZieEm0
これは面白いw
タッチパットのノートパソコンだとうまく利用できそう。

495:名無しさん@お腹いっぱい。
09/03/21 00:45:49 daHpkZkf0
おお、すんばらし。
組み込むと色々応用が効きそうだ。

496:名無しさん@お腹いっぱい。
09/03/21 01:16:17 e7LMny/o0
autohotkey.ini に includeで

#Include kurukuruscroll.ahk

と書いて使わせてもらったんだけど、includeする位置によって使えたり
使えなかったりするのはなんでだろう。

マニュアルのどこを読めばいいのか教えて欲しい。


497:名無しさん@お腹いっぱい。
09/03/21 05:54:27 enEmkL2t0
>>492
一つに纏められて助かりました
認識率と反応も完璧だね

498:名無しさん@お腹いっぱい。
09/03/21 07:41:19 QvNRDM9W0
>>496
URLリンク(lukewarm.s101.xrea.com)
ここの一番下auto-executeですね。
ホットキーが書いてあるとこより前に組み込みます。
変数が重複しないよう気をつけましょう。

499:名無しさん@お腹いっぱい。
09/03/21 08:45:00 e7LMny/o0
>>498
ありがとう!!!

各includeファイルのauto-executeセクションをautohotkey.iniのauto-executeセクションに移動したらうまく動いたー。

今までauto-executeセクションって知らなかった^^;
*.ahkを includeするときって

autohotkey.ini
-------------------
AAA.ahkの auto-executeセクション
BBB.ahkの auto-executeセクション
return

#Include AAA.ahk
#Include BBB.ahk
;ホットキー定義開始
-------------------





500:名無しさん@お腹いっぱい。
09/03/21 09:41:42 mEL9l3Hw0
ダブルクリック検出の件だが、何とかなったので張ってみる。コードのインデントに全角空白使ってるので注意。
 
; IsDoubleClicked関数
; ダブルクリックを判定する関数、L,R,M,X1,X2の各ボタンに対応
; システムからダブルクリック時間、範囲を取得して判定、AutoHotkey_Lの#ifでの使用を想定
IsDoubleClicked(){
 Static dcTime=0,LastTime,tx,ty,LastMouseKey=0,lx=-256,ly=-256,lr=0
 if(!dcTime){
  dcTime:=DllCall("GetDoubleClickTime")
  SysGet,tx,36
  SysGet,ty,37
  LastTime:=A_TickCount-dcTime*2
 }
 if(A_TickCount=LastTime)
  Return lr
 NowMouseKey:=(GetKeyState("LButton","P") | GetKeyState("RButton","P")<<1
  | GetKeyState("MButton","P")<<2 | GetKeyState("XButton1","P")<<3
  | GetKeyState("XButton2","P")<<4)
 VarSetCapacity(Point,8)
 DllCall("GetCursorPos","uint",&point)
 if((LastMouseKey!=NowMouseKey)||((A_TickCount-LastTime)>dcTime)
  ||(abs((NumGet(Point,0)-lx))>tx)||(abs((NumGet(Point,4)-ly))>ty)){
  lx:=NumGet(Point,0),ly:=NumGet(Point,4)
  LastTime:=A_TickCount,LastMouseKey:=NowMouseKey
  Return lr:=0
 }
 else{
  LastTime:=A_TickCount-dcTime
  Return lr:=1
 }
}

501:500
09/03/21 09:42:42 mEL9l3Hw0
; Lv_HitTest関数
; リストビューでアイテム上にマウスがある時に種類を返す
; そもそもリストビュー上でない場合は何も返さず、
; アイテム上にない場合は0を返す
; 参考:流行らせるページの MouseGesture.ahk 内 MG_LvHitTest() 関数
Lv_HitTest(){
 MouseGetPos,,,hwnd,class,1
 MouseGetPos,,,,chwnd,3
 WinGet,pid,PID,ahk_id %hwnd%
 VarSetCapacity(point,8)
 DllCall("GetCursorPos","uint",&point)
 if(substr(class,1,13)=="SysListView32" || substr(class,1,9)=="TListView"){
  p:=DllCall("kernel32.dll\GlobalAlloc","uint",0x40,"uint",8,"uint")
  NumPut(NumGet(point,0),p+0,0),NumPut(NumGet(point,4),p+0,4)
  DllCall("user32.dll\ScreenToClient","uint",chwnd,"uint",p)
  hp:=DllCall("kernel32.dll\OpenProcess","uint",0x001F0FFF,"uint",0,"uint",pid,"uint")
  pi:=DllCall("kernel32.dll\VirtualAllocEx","uint",hp,"uint",0,"uint",24,"uint",0x1000,"uint",0x4,"uint")
  DllCall("kernel32.dll\WriteProcessMemory","Int",hp,"uint",pi,"uint",p,"Int",8,"Int",0)
  SendMessage,0x1012,0,%pi%,,ahk_id %chwnd%
  DllCall("kernel32.dll\ReadProcessMemory","uint",hp,"uint",pi+8,"uintp",flag,"uint",4,"uint",0)
  DllCall("kernel32.dll\VirtualFreeEx", "uint",pi, "uint",0, "uint",0x8000)
  DllCall("psapi\CloseProcess","uint",hp)
  DllCall("kernel32.dll\GlobalFree","uint",p)
  flag:=flag & 15
  return (flag<4) ? ((flag<2) ? 0 : "ItemIcon") : ((flag<8) ? "ItemLabel" : "ItemState")
 }
}

502:名無しさん@お腹いっぱい。
09/03/21 09:43:29 mEL9l3Hw0
; IsDesktopDoubleClicked関数
; デスクトップをダブルクリックした時にTrue
IsDesktopDoubleClicked(){
 Return IsMouseOverDesktop() && IsDoubleClicked()
}
; IsMouseOverDesktop関数
; マウスがデスクトップ上にある時にTrue
; bbLeanだとProgmanじゃうまくいかなかったので
IsMouseOverDesktop(){
 MouseGetPos,,,hwnd
 Return (hwnd==DllCall("GetDesktopWindow")
  ||hwnd==WinExist("ahk_class Progman"))
}

503:500
09/03/21 09:44:06 mEL9l3Hw0
; 使い方 #ifじゃなくても何とかなるが、ダブルクリックじゃなかった時に
; 通常のクリックをするべきなので AutoHotkey_Lの#ifを推奨
#if IsDoubleClicked()
 && (WinActive("ahk_class CabinetWClass") || WinActive("ahk_class ExploreWClass"))
 && Lv_HitTest()==0
 LButton::Send,{BS}
#if IsDesktopDoubleClicked()
 LButton::Msgbox,デスクトップがダブルクリックされた
#if
 
以上、長くなった&見にくくてすまんがこんな感じでできた。


504:名無しさん@お腹いっぱい。
09/03/21 09:50:33 mEL9l3Hw0
; おまけ:行頭の全角スペースとTabを相互変換するスクリプト
#NoEnv
#EscapeChar '
Gui,Font,,MS ゴシック
Gui,Add,Text,,↓ここにコードを貼り付ける
Gui,Add,Edit,w640 h480 vData
Gui,Add,Button,gWsToTab,行頭の全角スペースをTabに変換
Gui,Add,Button,gTabToWs x+10,行頭のTabを全角スペースに変換
Gui,Show
Return
GuiClose:
GuiEscape:
ExitApp
GuiDropFiles:
if(A_EventInfo<=1)
 FileRead,Data,%A_GuiEvent%
GuiControl,Text,Data,%Data%
Return
WsToTab:
TabToWs:
Gui,Submit,NoHide
Output:="",w:=(A_ThisLabel="WsToTab" ? 1 : 0)
Loop,Parse,Data,% chr(10)
{
 chr:="",t:=A_LoopField
 While (SubStr(t,1,(w ? 2 : 1))==(w ? " " : chr(9)))
  t:=SubStr(t,(w ? 3 : 2)),chr.=(w ? chr(9) : " ")
 Output.=chr t chr(10)
}
GuiControl,Text,Data,%Output%
Return

505:名無しさん@お腹いっぱい。
09/03/21 17:16:25 5yWBri8L0
横からすみません。
ググったらあんまりヒットしなかったので、以前貼られていた
DoubleKey関数紹介しておきますね。
出展:URLリンク(www.donationcoder.com)

DoubleKey(RunCommand, timeout){
 if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout)
  Run, %RunCommand%
}
return

~LButton up::DoubleKey("hoge.ahk", 400)

みたいに各ボタンごとに処理を書いたahkファイル(ここでは同ディレクトリ内のhoge.ahk)
を別途用意する必要はありますが、これでも動作しまっする。

506:名無しさん@お腹いっぱい。
09/03/21 17:28:06 QyANxbob0
>>492のスクリプトを縦スクロールじゃなくて、横スクロールに
するにはどうすればいいんでしょうか?

507:500
09/03/21 18:03:47 mEL9l3Hw0
>>503のIsDesktopDoubleClickedを修正。
こうしないとアイコンダブルクリックした時にまで発動してしまう。
IsDesktopDoubleClicked(){
 Return IsMouseOverDesktop() && IsDoubleClicked() && Lv_HitTest()==0
}
 
>>505
確かにそういう方法でも時間内に2回クリックした時に何かするってことはできるんだけど、
1回目と2回目のクリック位置が離れてる時にも発動したり、
↑みたいにアイコンダブルクリック時にも発動しちゃったりして、
いわゆるダブルクリック系の挙動としてはちょっと弱いかなーって思って書いてみた。
あと意地でも2回目のクリックを乗っ取りたかったってのもある。
 
でも少しこだわりすぎたかなーとは思ってる…
まぁ、自分で組み込んで使ってるし結果的には満足。
 
>>506
WheelUpとWheelDownってなってるところを
横スクロールできるキーに変えればいいんじゃないかな。

508:名無しさん@お腹いっぱい。
09/03/21 18:08:20 H5O5lVNo0
>>505
ID:mEL9l3Hw0がどこまで厳密なモノを求めてるのかわからんのでスルーしていたのだが。
そもそも>505レベルでいいんならこんなに頑張ったりはしないと思う

509:名無しさん@お腹いっぱい。
09/03/21 18:09:14 H5O5lVNo0
リロってなかった。蛇足スマソ

510:名無しさん@お腹いっぱい。
09/03/21 18:27:06 HbFBHhgK0
ぶっちゃけ、あっちのフォーラム行けばいくらでもあるけどね…

511:500
09/03/21 18:27:27 mEL9l3Hw0
>>500の書き方だと勘違いされそうなので
一応書いておくけど、俺は>>484ではないです。
>>490を見て、UpperDirOneに相当する機能は
別のソフト使ってたの思い出したので、
何とかAHKだけで実現できないかなと思って、頑張ってみた。
…これこそ蛇足だったかな。

512:名無しさん@お腹いっぱい。
09/03/21 19:39:14 5yWBri8L0
>>507
申し訳ありませんでした

> 1回目と2回目のクリック位置が離れてる時にも発動したり、
> ↑みたいにアイコンダブルクリック時にも発動しちゃったりして
そらそうですよね・・・深く考えずに書き込んだこと反省してROM専に戻ります。
あと IsMouseOverDesktop関数はいろいろ使えそうですね。頂きます&&乙であります。

513:名無しさん@お腹いっぱい。
09/03/21 20:03:23 YAcqdaL20
>>461
超亀レスで失礼します。
見つけたので貼っておきますね。
試してませんが通常ののキーボードでも動作するようです。
USB接続のテンキーを、プログラマブルキーボード
URLリンク(ioenc.net)

514:名無しさん@お腹いっぱい。
09/03/22 11:30:10 GrExewU20
こんにちは
MouseGesture2、2008/10/07版をVista SP1で使わせて貰ってます。
マウ筋の機能で「設定ホイール回転でアクティブ」という機能があるのですが
(ArtTipsというソフトでは、SETTING>快適マウスホイール>快適マウスホイールを使用する>フォーカス移動を行う)
これと同じ挙動をMouseGesture2で実現させるにはどのように記述すればうまく行きますか?

あと、JaneDoe Viewなど一部のソフトでWinMinimizeを使って最小化すると
デスクトップ左下にタイトルバーの小さくなったものが、残って最小化されてしまいます。
これを回避する方法を教えて下さい。

515:名無しさん@お腹いっぱい。
09/03/22 11:41:41 scspGd4S0
簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
WinActivate
を記述する

516:名無しさん@お腹いっぱい。
09/03/22 11:46:37 T0zgn4OC0
流行らせるページのホイールリダイレクトでもいいんじゃね

517:名無しさん@お腹いっぱい。
09/03/22 11:56:01 4c0Fopck0
アクティブにしつつスクロールするなら両方

518:名無しさん@お腹いっぱい。
09/03/22 12:23:38 GrExewU20
>>515-517
親切に即レスありがとうございます。
>簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
>WinActivate
>を記述する
が一番挙動が近かったのですがマウ筋とArtTipsの機能は
Xplorer2などの二画面ファイラーや小ウィンドウがあるようなソフトに対しても
各ウィンドウをホイールの回転でアクティブに出来るので、このような挙動を望んでいますが
無理な場合WinActivateでアクティブにするようにしたいと思います。

しかし、この場合ホイールUp、Dnでアクティブになったあと普通にスクロールが利かなくなってしまいますよね?

519:名無しさん@お腹いっぱい。
09/03/22 12:46:54 ZBRd96Tp0
>>490 をファイル選択ダイアログでも効くようにした
注意) 全角スペース利用、誤爆が無いとは言えない

; UpperDirOne
LButton::
 if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) {
  MouseGetPos,,,,classNN
  if (classNN=="SysListView321") {
   ControlGetText, text, SysListView321, A
   if (text == "FolderView") {
    ControlGet, selected,List,Selected, SysListView321, A
    if (!selected)
     Send, {BackSpace}
   }
  }
 }
 Send, {LButton Down}
 KeyWait, LButton
 Send, {LButton Up}
 return


520:名無しさん@お腹いっぱい。
09/03/22 17:35:30 Rn9QKfmc0
MouseGesture2の設定で動作割り当てのキー操作を発生させるのパラメーターに
無変換キーの2回押しを設定したくて{無変換}{無変換}とやってみたのですが
認識してくれません。無変換キーは何で登録すれば良いでしょうか?

521:名無しさん@お腹いっぱい。
09/03/22 17:37:47 Biaw3oNa0
>>520
URLリンク(lukewarm.s101.xrea.com)

522:名無しさん@お腹いっぱい。
09/03/22 18:04:15 Rn9QKfmc0
>>521
ありがとうございます。そのページは見落としていました。
早速、カーソルが画面左下角に接触で1秒遅らせて無変換を2回押しがしたくて動作に
if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}{vk1Dsc07B}
}

if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}
MG_Wait(100)
Send,{vk1Dsc07B}
}
など、やってみたのですがうまく動きません。
どなたかアドバイスお願い致します。

523:名無しさん@お腹いっぱい。
09/03/22 23:07:53 gJvAxqMw0
動作の確認音にSoundbeepを使ってたけど、パソコン変えたらビープが鳴らないw

524:名無しさん@お腹いっぱい。
09/03/23 09:06:05 Y2hrPoG60
とりあえず転載、ID:GrExewU20 と ID:Rn9QKfmc0 はモリタポ用意して制作者の教えを乞え
URLリンク(lukewarm.s101.xrea.com)

> 123 名前:管理人 ★[] 投稿日:2009/03/23(月) 06:07:20
> 2chのAutoHotkeyスレにMouseGesture.ahkの質問が書かれていたのに、DION規制で書き込めなくて困る。
> 誰か親切な人があと555モリタポほど恵んでくれれば、p2で書き込めるのだが。
> URLリンク(find.2ch.net)エユ、「、熙ャ、ネ、ヲ、エ、カ、、、゙



しかしDION規制まじむかつく、Viewは何故か24時間以上起動させっぱだと●ログイン無効になるので
いちいち再起動させなくちゃいけなくて面倒だ

525:名無しさん@お腹いっぱい。
09/03/23 09:53:24 Edo9xp5W0
>>3のとおりに、CapsLockをF13~F24に割り当てようと思うんだけど、
Change Keyってどうやってこれ割り当てるの??
似たようなレジストリ変更タイプのキーチェンジソフトいくつか探してみたが、
どれもF12までしか割り当てられないっぽい・・・

526:名無しさん@お腹いっぱい。
09/03/23 12:36:14 WUKQO+dS0
>>522
Send,{vk1Dsc07B}{vk1Dsc07B} → Send,{vk1Dsc07B 2}

MG_Wait(100) → Sleep,100

>>518
Jane Doe Style は「ウィンドウ(W)」→「最小化(M)」
があるのでそれを実行させればいいんじゃない?
Send,!w
Send,m

それかJane Doe Styleのショートカットキーのカスタマイズで
最小化にキーを割り当ててそれをSendするとか。

アクティブにしてスクロールは
アクティブした後にWheelUp(Down)を送ればいいじゃない。
あと、コンボボックスをアクティブにしようとすると
コンボボックスが消えるのでアクティブにしないようにしとけば
概ね支障なく動くはず。

527:名無しさん@お腹いっぱい。
09/03/23 12:36:56 WUKQO+dS0
<< >>526の続き >>

;WU_ の Default に↓の2行を追記する。
gosub, CursorUnderActivate
Send,{WheelUp}

;WD_ の Default に↓を2行を追記する。
gosub, CursorUnderActivate
Send,{WheelDown}

;MG_User.ahk をテキストエディタで開き、以下を「サブルーチン定義」内にコピペ
;マウスカーソル下をアクティブにする関数
CursorUnderActivate:
MouseGetPos,,, m_id, m_control
WinGetClass, m_class, ahk_id %m_id%
;マウスカーソル下がコンボボックス(ドロップダウンリスト)ならreturn
If(RegExMatch(m_control, "ComboLBox\d+"))
return
;マウスカーソル下が非アクティブならアクティブ化
IfWinNotActive, ahk_id %m_id%
{
SetWinDelay,-1
WinActivate
SetWinDelay,100
}
return

;これで支障が出るなら>>517の方法がいいと思う。

528:名無しさん@お腹いっぱい。
09/03/23 12:39:05 WUKQO+dS0
あ、ウィンドウクラスは必要ないので↓は要らないや・・・
WinGetClass, m_class, ahk_id %m_id%

529:名無しさん@お腹いっぱい。
09/03/23 12:40:24 WUKQO+dS0
×;マウスカーソル下をアクティブにする関数
○;マウスカーソル下をアクティブにするサブルーチン

530:名無しさん@お腹いっぱい。
09/03/23 13:54:01 1ZxaOcnN0
>>525
K SC Type Up/Dn Elapsed   Key
------------------------------------------------
7C 064  i   u    0.04    F13
7D 065  i   u    0.04    F14
7E 066  i   u    0.04    F15
7F 067  i   u    0.04    F16
80 068  i   u    0.04    F17
81 069  i   u    0.04    F18
82 06A  i   u    0.04    F19
83 06B  i   u    0.04    F20
84 06C  i   u    0.04    F21
85 06D  i   u    0.04    F22
86 06E  i   u    0.04    F23
87 076  i   u    0.04    F24

531:名無しさん@お腹いっぱい。
09/03/24 23:15:50 mXwaygr80
多重起動を検知したくて以下のようにしたんだけど、
除外タイトルって効いて無い
それともPIDとかでの除外は無理なのかな

#SingleInstance, OFF
Process, Exist
myPid:=ErrorLevel
DetectHiddenWindows,On
IfWinExist, %A_ScriptFullpath% ahk_class AutoHotkey,,ahk_pid %myPid%
 MsgBox, あり
Else
 MsgBox, なし


532:名無しさん@お腹いっぱい。
09/03/25 01:46:19 zeEEOJ2T0
>>531
>>144,147,153

前々スレに多重起動検知で終了とかはあったよ。
タイトルが一緒でPIDが違うならで、判別してた。

一部だけ引用
;自分の情報を取得
DetectHiddenWindows, On
Process,Exist
pid:=ErrorLevel
WinGetTitle, g_scriptTitle, ahk_pid %pid%
WinGet, hwnd, id, ahk_pid %pid% ahk_class AutoHotkey
;ahk_class AutoHotkeyのウィンドウを全て列挙
WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop, %ahk_id_list%{
this_id:=ahk_id_list%a_index%
ahk_id_list%a_index%=
WinGetTitle, this_title, ahk_id %this_id%
if(g_scriptTitle==this_title && hwnd!=this_id){ ;自分以外で同じタイトルを見つけたら終了メッセージを投げる。

533:名無しさん@お腹いっぱい。
09/03/25 08:36:04 zeEEOJ2T0
暇だったから、作ってみた。あまりの使えなさに吹いたw
#persistent
CoordMode, Mouse, Screen
Settimer, Expose
return

Expose:
MouseGetPos, X, Y
if (Y<1){
;左右に並べて表示
SendMessage,0x111,405,,,ahk_class Shell_TrayWnd
keywait, LButton, D
KeyWait, LButton
;元に戻す
SendMessage,0x111,416,,,ahk_class Shell_TrayWnd
Loop
{
MouseGetPos, X, Y
if (Y>2)
break
}
}
return

534:名無しさん@お腹いっぱい。
09/03/25 13:01:45 UMyjgm290
>>525
俺はchangekeyでF13を割り当ててるよ。

535:名無しさん@お腹いっぱい。
09/03/26 00:11:10 jOUXxwTe0
ctrlキー2連打でブラウザの更新に割り当てたいのですが、

ctrl::send,^r
↑ここをどう記述すればいいかご教授願います。

536:名無しさん@お腹いっぱい。
09/03/26 01:12:54 23S/nCDd0
>>535>>487
もう>>2-3ぐらいに必須だなwまあ、あっても無駄かもしれんが

537:名無しさん@お腹いっぱい。
09/03/26 06:07:49 23S/nCDd0
下記の、表示ウィンドウのハンドルを取得する単純なスクリプトですが、
ひとつのウィンドウしか表示されてないプロセスでも二つ取得できているのは、どういう理屈なのでしょうか?
さっぱりです(´・ω・`)

#persistent
;ウィンドウハンドル一覧
WinGet, List, List,,,aaaaaaaaaaaaaa
Loop,%List%
{
Hwnd := List%A_Index%
WinGet, exe, ProcessName, ahk_id %Hwnd%
abc .= exe . " " . Hwnd . "`n"
}
msgbox, %abc%
return

esc::reload

538:名無しさん@お腹いっぱい。
09/03/26 09:02:50 r4Tse8HJ0
Jane(クラスがTMAainWindとTApplication)だったりしないだろうか

どういう理屈っていうか、作った側の理屈でしょ

539:名無しさん@お腹いっぱい。
09/03/26 13:40:23 23S/nCDd0
どうもです。調べたらTApplicationでした。見えてなくてもあるんだよ状態か・・・

流行らせるページがヒット
>やっかいなのがDelphi製のソフトのTApplicationというクラス名のウィンドウ。
>可視ウィンドウ扱いで、タスクバーにはこのウィンドウのタイトルが表示されるが、実際には大きさがゼロで画面には表示されない。
>VxEditorなど、TApplicationが不可視になっているものもある。

540:名無しさん@お腹いっぱい。
09/03/26 14:28:13 /i446DAf0
質問です。
Sendコマンドにてreturnと入力したいのですが、
エラーが出てしまいます。

Sendコマンド中で、returnと表現するには
どうしたらよいでしょうか。

541:名無しさん@お腹いっぱい。
09/03/26 14:34:46 /i446DAf0
>>540
すいません。
自己解決しました。

542:名無しさん@お腹いっぱい。
09/03/26 14:38:19 CODN8xT10
何を間違えていたのか気になる
教えて

543:名無しさん@お腹いっぱい。
09/03/26 14:42:30 r4Tse8HJ0
Send, return

544:名無しさん@お腹いっぱい。
09/03/26 19:22:46 23S/nCDd0
>>487
>IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。
こっちじゃないと正しく動かないかも。あとこれじゃ3連打したら、2回発動する?
~Ctrl::
ifNotEqual, A_PriorHotkey, %A_ThisHotkey%, return
ifGreater, A_TimeSincePriorHotkey, 400, return
soundplay,*-1
return

流行らせるページのほうがいいか。
~Ctrl::
if A_TickCount < %ctrldouble%
{
;some action
ctrldouble=0
}
else
{
ctrldouble=%A_TickCount%
ctrldouble+=400
}
return

545:名無しさん@お腹いっぱい。
09/03/26 23:30:02 s6sjDdIo0
いやあ、規制長かった。
どうでもよくなったw

546:名無しさん@お腹いっぱい。
09/03/26 23:34:24 r4Tse8HJ0
モールスのパクり。キーが規定時間以内に何度押されたかを返す。
キー押す・離すで1セットなので押しっぱなしで利用するキーやボタンには向かない
あまり使えない

KeyCount(timeout=0.3) {
 key := RegExReplace(A_ThisHotkey, "^[\$\^\+!#]+","","")
 KeyWait, %key%
 Loop {
  count++
  KeyWait,%key%, D T%timeout%
  If ErrorLevel
   break
  KeyWait, %key%
 }
 return count
}

: ex) [Win]+[Space]二度(以上)押しでIME ON/一度ならOFF
#Space::IME_SET(KeyCount()>1)

547:名無しさん@お腹いっぱい。
09/03/26 23:47:26 r4Tse8HJ0
ちょっと変えた。
↓みたいに回数指定でやればキャンセルも出来るしちょっと便利かもしれない

~Ctrl::
 If KeyCount() = 3
  MsgBox, Some Action
 return

KeyCount(timeout=0.3) {
 key := RegExReplace(A_ThisHotkey, "^[\$\^\+\*!#~<>]+","","")
 KeyWait, %key%
 Loop {
  count++
  KeyWait,%key%, D T%timeout%
  If ErrorLevel
   break
  KeyWait, %key%
 }
 return count
}

548:名無しさん@お腹いっぱい。
09/03/29 06:38:33 wyAVApH80
>>547
これいいね。Libフォルダ行き、決定。

URLリンク(lukewarm.s101.xrea.com)
俺の昨日の財産。なんちゃってホイールVol。アイディアもスクリプトもGUIも、全部パクリだけどねw
細かいところは面倒くさかったから、やってない。WheelVolとGOM使ってる人におすすめ。

549:名無しさん@お腹いっぱい。
09/03/29 10:50:37 rJZ7qtHO0
>>548
実行しても何も表示されないんだが
当方vista sp1
何か設定が必要?

550:名無しさん@お腹いっぱい。
09/03/29 14:00:46 NRu5w9hF0
ウィンドウが最大化されているか、
されていないかを取得する方法ってありますか?

551:名無しさん@お腹いっぱい。
09/03/29 14:29:42 pOBhf47V0
WinGet, status, MinMax, hogehoge

552:名無しさん@お腹いっぱい。
09/03/29 15:00:23 x2HXBG8DP
メニュー上の項目先頭のチェック"レ"が付いているかいないかを取得する方法ってありますか?

553:名無しさん@お腹いっぱい。
09/03/29 15:41:55 mk90UFZl0
WinGetレ

554:名無しさん@お腹いっぱい。
09/03/29 15:52:41 pOBhf47V0
>>552
AHKにゃ無い。
あと最近のアプリは「普通のメニュー」を使っていないのが多いよ。

555:名無しさん@お腹いっぱい。
09/03/29 16:20:44 wyAVApH80
>>549
メモ帳で中身見てもらえばわかると思うけど、基本は無変換押してホイールくるくる。
#NoTrayIconは外したほうがいいかも。Vistaでも動くかな?わからない。動くと思うけど。

556:552
09/03/29 16:22:07 x2HXBG8DP
>>554
そうでしたか
どうもありがとうございました

557:549
09/03/30 00:10:07 rej68raf0
>>555
おお動いたよ
おもしろいねこれ

558:名無しさん@お腹いっぱい。
09/03/30 03:11:37 rej68raf0
imeの状態を、キーの入力ごとにチェックするのではなくて、
0.5秒ごとにチェックするには
どうすればいいのでしょうか?


559:名無しさん@お腹いっぱい。
09/03/30 03:27:33 lQv120RA0
>>558
#persistent
SetTimer, IME_GET, 500
return
IME_GET:
Tooltip,% IME_GET()
return

560:558
09/03/30 07:57:20 rej68raf0
>>559
ありがとうございます!
非常に助かりました!

561:名無しさん@お腹いっぱい。
09/03/31 13:18:36 LiwDBTTE0
マウスカーソル1回転させると何かアクションを起こすみたいなサンプルスクリプトってないですかね。

562:名無しさん@お腹いっぱい。
09/03/31 14:34:53 V9eOhI1h0
>>561
>>492

563:名無しさん@お腹いっぱい。
09/03/31 16:22:04 DLXcLh2K0
前から思ってたんだけどCoordModeを画面端からの絶対座標にする方法は
ないですか?
画面の右側にGUIやtooltipを表示するスクリプトを作って使っているんだけど、
使うPCによって画面外にはみ出したりする。
今はPCごとに表示座標を書き換えてるんだけど
そうしなくていい方法があったら教えてくれませんか。

564:563
09/03/31 16:24:29 DLXcLh2K0
自己レス。
WinGetPosでProgram Managerを指定してデスクトップのサイズを
取得すればいいのかな?と今気付いた。

565:名無しさん@お腹いっぱい。
09/03/31 17:59:07 ppgb+fKo0
>>563
SysGet

566:名無しさん@お腹いっぱい。
09/03/31 20:30:14 wxVKoyMy0
キーを押す長さをSetKeyDelayで設定できるようですが、
右クリックを5000ms押す場合には、どのように指定すればいいですか?


567:名無しさん@お腹いっぱい。
09/03/31 20:54:33 V9eOhI1h0
SomeKey::
Send, {RButton Down}
Sleep, 500
Send, {RButton Up}
return

ちなみにこれだと5秒経たないうちにもう一度キーを押しても反応しない

568:名無しさん@お腹いっぱい。
09/03/31 20:55:24 V9eOhI1h0
あ、500msになっとる・・・

569:名無しさん@お腹いっぱい。
09/03/31 22:45:50 wxVKoyMy0
>>567 >>568
レスありがとうございます。
アドバイスのおかげでうまくいきました

570:名無しさん@お腹いっぱい。
09/04/01 17:17:57 UifZp1zf0
guiのウィンドウを動かしたら
その移動後の位置を取得したいです
どうすればいいのでしょうか


571:名無しさん@お腹いっぱい。
09/04/01 19:38:22 81tLNstp0
>>548
AhkWheelVol改訂パクリ増幅完成版
WheelVolアイコンを使えるようにした。他微々変更。
URLリンク(lukewarm.s101.xrea.com)

572:名無しさん@お腹いっぱい。
09/04/01 19:52:53 81tLNstp0
>>570
Process,ExistとかWinGetとかWinGetPosとか使う

573:名無しさん@お腹いっぱい。
09/04/01 20:11:31 o8Y7i7os0
>>570
すげ~力業。もっとスマートにできないもんかねぇ

Gui, +LastFound
GuiHwnd := WinExist()
Gui, Show, w200 h100
WinGetPos,xx,yy,,,ahk_id %GuiHwnd%
return

#IfWinActive, ahk_class AutoHotkeyGUI
~LButton Up::
~Enter Up::
 WinGetPos,x,y,w,h, ahk_id %GuiHwnd%
 if (xx != x || yy != y)
  SetTimer, OnGuiMoved,-1
 xx:=x,yy:=y
 return
OnGuiMoved:
 Tooltip, (%x%`,%y%)
 SetTimer, TipOff, -2000
 return
TipOff:
 Tooltip
 return


574:名無しさん@お腹いっぱい。
09/04/01 22:28:53 81tLNstp0
OnMessageでできるんじゃないかな。

575:名無しさん@お腹いっぱい。
09/04/02 03:15:35 dUEx8qZ/0
URLリンク(lukewarm.s101.xrea.com)
今年も嘘なの?

576:名無しさん@お腹いっぱい。
09/04/02 19:29:48 7vkTJaDR0
VistaでGuiをDestroyするとなぜかGuiが二度と表示できなくなってしまう・・・
XPでは動いたのに・・・

577:名無しさん@お腹いっぱい。
09/04/04 12:00:41 THWk95Pp0
需要あるかどうかわからないけど貼り、リモートデスクトップの背景色を透過させるスクリプト
リモートデスクトップクライアント側は背景画像なしで起動、スクリプト内部の「396da5」は各自で適宜書き換えてほしい
あと、同時に2つ以上のリモートデスクトップクライアントが起動する状況は一切考慮してない

あまりこういうもの書いた経験ないんで、書き方がアレなのはご勘弁を
---
#Persistent
SetTitleMatchMode,2
SetTitleMatchMode,Fast
DetectHiddenWIndows,Off
SetTimer RemoteTrans,100
return

RemoteTrans:
IfWinExist,リモート%A_Space%デスクトップ接続 ahk_class #32770
{
If(TransFlag = 0)
{
DetectHiddenWIndows,On
TransFlag = 1
WinSet,Trans,Off,ahk_class TSSHELLWND
WinSet,TransColor,396da5 255,ahk_class TSSHELLWND
DetectHiddenWIndows,Off
}
}
else
{
TransFlag = 0
}

578:名無しさん@お腹いっぱい。
09/04/04 12:06:35 zJiZ72fS0
>>576の続き
VistaだとGuiをDestroyすると、そのGui番号ではGuiが表示できなくなるみたい

579:名無しさん@お腹いっぱい。
09/04/04 13:42:03 rZJUeqT00
単にキーバインドの変更のためだけにこのソフトを使おうと思ってるのですが、
その目的に使うだけだったらこのソフトのメリットは大してないのでしょうか

580:名無しさん@お腹いっぱい。
09/04/04 13:56:52 xW9QnJcO0
そんなこともない
だがCapsLockをどうにかしたいのなら諦めれ

581:名無しさん@お腹いっぱい。
09/04/04 14:13:49 kSmNsRer0
changekeyと組み合わせれば、CapsLock問題もクリアーできるよ。
そして便利な使い方を考えるうちに、スクリプトにはまって、VBS、Perに手を出して、終いにはC言語の勉強を始めたのは俺。

582:名無しさん@お腹いっぱい。
09/04/04 14:25:10 zJiZ72fS0
プログラミングの手間を省くために手を出すような奴もここにいる
できる範囲が大きすぎて全部AutoHotkeyでやろうとしてしまうのがデメリットかな

583:名無しさん@お腹いっぱい。
09/04/04 14:34:05 mA/w516g0
>>581
あ、俺ガイル

584:名無しさん@お腹いっぱい。
09/04/04 15:03:21 FNUcueKP0
ほんとこのソフトすごいよね便利すぎてハマるの分かる

585:名無しさん@お腹いっぱい。
09/04/04 15:17:57 hXZrj5Ty0
ちょっと便利にするコードを書くうち脱線しすぎて気づけば、
数十万件ほどある2chのDAT自動分類とか、本文検索、カテゴリわけ、統計抽出で使ってる。

ホットキーは、このメインプログラムを呼び出すための
ショートカットキーとして唯一、機能している。

586:名無しさん@お腹いっぱい。
09/04/04 15:51:05 YxZpHoQz0
マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。
>>581
俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。
AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。

587:名無しさん@お腹いっぱい。
09/04/04 15:52:14 YxZpHoQz0
マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。
>>581
俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。
AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。

588:名無しさん@お腹いっぱい。
09/04/04 15:54:42 YxZpHoQz0
初の連打、すまん。失敗したって出て、リロードしても書き込まれてなかったからorz
>>571
これ、リモートデスクトップ先でもとりあえず使える。Master音量しか出ないけど。

589:名無しさん@お腹いっぱい。
09/04/04 18:46:06 YxZpHoQz0
やっぱAltTabって特殊なんだね。
~LAlt & Tab::
KeyWait, Tab, T0.15
if Errorlevel = 0
send, {Blind}{Tab}
if Errorlevel = 1
send, {Blind}+{Tab}
settimer, altreturn, -1
return

altreturn:
keywait, LAlt
send, {Return}
return

590:名無しさん@お腹いっぱい。
09/04/06 16:01:58 Z06B8II+0
AVGがあると、Ahk2Exe.exeでコンパイル失敗するみたいね。
常駐シールドの例外設定すればいいらしい。

591:名無しさん@お腹いっぱい。
09/04/07 04:03:27 Mds5OALU0
#Persistent ;監視
Clipboard= ;クリップボードのクリア
OnClipboardChange: ;クリップボードの内容が変更されたときに実行されるラベル

これなんですが、これだとクリップボードの内容が同じ場合でも
(同じ文字列などを続けてコピーした場合)
実行されてしまいます。
クリップボードの内容が同じ場合は実行しないようにしたいのですができるでしょうか?

592:名無しさん@お腹いっぱい。
09/04/07 09:21:26 tWsUW9OG0
前のと比較すればいいだけでは

593:名無しさん@お腹いっぱい。
09/04/07 15:30:24 TGZWu1B70
>3後半の文字化けってUTF-8でソース保存すれば回避できる?

594:名無しさん@お腹いっぱい。
09/04/07 16:07:21 t+lMuHL/0
文字化けではなくダメ文字、つまり正しく解釈された上での問題なのでそれでは回避出来ない

595:名無しさん@お腹いっぱい。
09/04/07 19:45:06 CUjFaHh90
Q: ファイルパスに駄目文字があるんだが、、、
A: 駄目文字微対策版( URLリンク(yak.myhome.cx) )を使え。

596:名無しさん@お腹いっぱい。
09/04/07 19:57:38 sZshg2Md0
流行らせるにある、ホイールリダイレクト使ってるんだが、ところどころホイール操作自体できなくなります。
例)タスクトレイをホイールすることができない、デュアルモニタ環境で特定のモニタのFirefoxにホイールができない など
*WheelDown::
CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
wp:=0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
lp:=y<<16|x
IfWinExist,ahk_id %hwnd%
{
  SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
  If ErrorLevel=4294967295
    MouseGetPos,,,,ctrl,2
  Loop,%A_EventInfo%
    PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
}
どこか改善できないでしょうか?

597:596
09/04/08 12:13:50 Ox1RALx+0
他の症状としては
OpenOffice.orgの表計算ソフトCalcでスクロールが一切効かないです

598:名無しさん@お腹いっぱい。
09/04/08 13:15:09 2zdTWL/U0
その場合は、CalccだけでなくOOo全般で、他にマンドプロンプトも効かないはず
ウィンドウ内にコントロール(窓)が無い構成だから(変数ctrlが空)
メッセージ送信先を窓本体にすればよいんで、Loopの前の行に
ctrl := !ctrl :? hwnd : ctrl
を入れれば動くんじゃないかな

後のことは情報少ないし、環境も作れないから分かんない

599:名無しさん@お腹いっぱい。
09/04/08 13:43:07 Ox1RALx+0
ありがとうございます。
でもctrl := !ctrl :? hwnd : ctrlだとエラーになります・・?

600:名無しさん@お腹いっぱい。
09/04/08 14:19:57 2zdTWL/U0
typo だw
ctrl := !ctrl ? hwnd : ctrl

601:名無しさん@お腹いっぱい。
09/04/08 14:35:55 Ox1RALx+0
>>600
本当にありがとうございました。Calc動くようになりました
Firfoxのほうは動かないのですが諦めますorz

602:名無しさん@お腹いっぱい。
09/04/08 18:30:54 MeqYpMzl0
流行らせるページのリファレンスに While とかが載ってないorz

603:名無しさん@お腹いっぱい。
09/04/08 18:42:23 R1fhUxJX0
もう更新されないだろうね

604:名無しさん@お腹いっぱい。
09/04/08 18:48:42 HObCX3A80
困った時は本家のリファレンス見た方がいいと思う
流行らせるの方は微妙に省略されてたりするんで、たまに本家を見ると新しい発見がある

605:名無しさん@お腹いっぱい。
09/04/08 18:52:32 3ImCV3Nv0
wikiがほしいところ

606:名無しさん@お腹いっぱい。
09/04/08 20:06:46 HJw1Zxkl0
今のAutoIt2ベースから
AutoIt3ベースで作り直してもらえると
多言語に強くなると思うのだけど

まぁasciiしか使う必要がなければ関係ないっちゃないか

607:名無しさん@お腹いっぱい。
09/04/10 05:49:27 JwzMpV8P0
流行らせるページは見やすくていいな。
白背景は法律で規制したほうがいい。まぶし過ぎて目に悪い。

608:名無しさん@お腹いっぱい。
09/04/10 15:07:51 DVG7YxSE0
レジストリいじらずにキーの入れ替えする方法を探してますが、
>3を読む限りahkでも無理そうですね。

流行らせるページを参考にscコードでCapsLockとCtrlを入れ替えたら
Ctrlが常にONの状態になりました。何か方法ありませんか?・・・


609:名無しさん@お腹いっぱい。
09/04/10 15:48:55 xEF1XKbe0
色んな人がさんざん試しって解決法が無いからテンプレの最初にある

610:名無しさん@お腹いっぱい。
09/04/10 16:34:05 p2tyHjkH0
ジョイスティックのアナログキー→矢印キー変換をこんな感じでやってるんだけど、
もうちょっと良い方法って無いのかな? あまりにも基本過ぎるみたいで検索にも引っかからない

sleepjoy = 100
SetTimer, getjoy, 30
#Persistent
return

getjoy:
GetKeyState, joyx, JoyX
GetKeyState, joyy, JoyY
if joyx between 49 and 51
if joyy between 49 and 51
return
Gosub, ranjoy
return

ranjoy:
if joyy > 75
Send {down}
else if joyy < 25
Send {up}
if joyx > 75
Send {right}
else if joyx < 25
Send {left}
sleep, sleepjoy
return

611:名無しさん@お腹いっぱい。
09/04/10 19:16:26 if/vCKuH0
流行らせるページを見てもわからなかったので質問させてください
任意のウィンドウの状態(最大化・最小化)を知る方法はありませんか?
サイズや座標はわかるようですが・・・

612:名無しさん@お腹いっぱい。
09/04/10 19:29:20 /daiVpQd0
>>611
WinGetでCmdにMinMax

613:名無しさん@お腹いっぱい。
09/04/10 19:35:26 nal87SU+0
>>611
>>551
あとは↓でMinMaxでページ検索
URLリンク(lukewarm.s101.xrea.com)

614:名無しさん@お腹いっぱい。
09/04/10 20:02:00 xEF1XKbe0
>>610
低級なものしか用意されていないみたい
結局「タイマーして、キー状態みて、何かする」ってコード書かなきゃならないっぽい

615:名無しさん@お腹いっぱい。
09/04/10 23:25:26 T3nhlFEF0
悩んでみたけど、俺の頭じゃ解決できなかったので質問させてください。

ホットキーを無効にする処理についてです。
変数の中身によって、特定のホットキーを無効にしたりすることはできないものでしょうか。
#全部無効/有効はSuspendによって可能なことは確認いたしました。

流行らせるページより、
> サブルーチンの最初の行が「Suspend,On」以外のSuspendコマンドになっているホットキーは、Suspend,Onが実行されても無効化されない。
このあたりをうまく使えばできるのでしょうが、書き方が悪いのかうまく動いてくれません。

解決法をご存じの方は教えていただけると助かります。

616:名無しさん@お腹いっぱい。
09/04/10 23:34:00 p2tyHjkH0
>>614 thx 結局ジョイスティックに関しては見やすくまとめるとこんな感じになるのかな
SendJoy1 = {up}
SendJoy7 = {down}
SendJoy5 = {right}
SendJoy3 = {left}
SendJoy8 = {down}{right}
SendJoy6 = {down}{left}
SendJoy2 = {up}{right}
SendJoy0 = {up}{left}
SleepJoy = 100
SetKeyDelay, 20
SetFormat, float, 0.0
SetTimer, GetJoy, 30
#Persistent
return

GetJoy:
GetKeyState, joyx, JoyX
GetKeyState, joyy, JoyY
joyx := 0.018 * joyx -= 50
joyy := 0.018 * joyy -= 50
joyh := 4 + joyx + joyy *3
if joyh = 4
return
Gosub, RunJoy
return

RunJoy:
SendJoy := SendJoy%joyh%
Send %SendJoy%
sleep, SleepJoy
return

617:名無しさん@お腹いっぱい。
09/04/11 00:49:53 e4COaq2Q0
>>615
#1::
 Hotkey, #2, Hoge, % (flg:=!flg) ? "On" : "Off"
 return
Hoge:
 MsgBox, Hoge
 return

618:>>615
09/04/11 01:49:46 rh+NBoz70
>>617
返信ありがとうございます。
ですが、私が思っていたこととはちょっとだけ違うような気がします。
#自分が思っていることをうまく伝えられなくてごめんなさい。

ですので、あとは自分で頑張ります。ありがとうございました。

619:名無しさん@お腹いっぱい。
09/04/11 02:16:39 w6Dx6pM+0
>>618
どう違うのか書かないと、せっかく答えてくれた人も消化不良になるだろ。
自分ひとりだけよければ、それでいいのか?

620:名無しさん@お腹いっぱい。
09/04/11 02:58:52 LqjZj8GK0
USBの外付けテンキーに、普通のキーボードのテンキーと別のコマンドを
Autohotkeyを使って割り当てる事ってできるんでしょうか?
テンキーをプログラマブルキーボード的に使えないかと思うんですが
キーボード側のテンキーと連動しちゃわないかと思いまして…

621:名無しさん@お腹いっぱい。
09/04/11 04:07:31 1EEvkJ+r0
>>620
つ MagicKeyPad

622:名無しさん@お腹いっぱい。
09/04/11 04:19:05 J5YLNUgU0
uusbd.sysでも使って
デバイス毎にホットキーやリマップが設定出来るようになったら夢が広がるんだけどな

外付けテンキー全般に言えるか分からんが
マジェテンキーはNumLockがOnとOffの時とで異なるキーコードを送るようだから
やりようによってはフルキーボード付属のテンキーと別の動作をすることが出来るかもね

623:名無しさん@お腹いっぱい。
09/04/11 05:45:21 LqjZj8GK0
>>621
おおっ こんなソフトが! ありがとうございました。
Ahkで可能だったら最高だったんですが、現状ではできない感じなのでしょうかね。

624:名無しさん@お腹いっぱい。
09/04/11 07:39:15 bNSgGuY10
>>615
617でダメならナニがしたいのかよくわからんが
hotkeyコマンドで任意のホットキーをオン・オフ出来るからそれで良いんじゃないの?と思うが


625:名無しさん@お腹いっぱい。
09/04/11 08:46:33 rh+NBoz70
>>619
そうですね。すみませんでした。

やりたかったこと:
アプリケーションA専用のホットキーとして6つほど割り当てております。
そのほかにアプリケーションランチャー代わりとして5つほど割り当てているのですが、変数の中身の値によってそれだけをすべて無効にしたかったのです。

#あるキーを押せば無効になる、というものではなくあらかじめ設定用の変数を用意/設定をし、それによってスクリプトを走らせたと同時に有効/無効を切り替えられればな、と。
#走らせたあとは有効/無効を切り替えるということは考えていなかったです。


>>624
やぱ俺の頭が足りんよ
リファレンスとにらめっこしてくるよ

626:名無しさん@お腹いっぱい。
09/04/11 08:47:29 iBHZiqEC0
xpを使っています
autohotkeyのスクリプトから、そのスクリプトのショートカットをスタートアップに登録したいです
A_ScriptFullPathでそのスクリプトのありかを取得
A_Startupでスタートアップフォルダのありかを取得
ここまでは分かっています。その先がわかりません。

627:名無しさん@お腹いっぱい。
09/04/11 08:55:36 ZRhwazf80
FileCreateShortcut, %A_ScriptFullPath%, %A_Startup%\%A_ScriptName%.lnk

628:名無しさん@お腹いっぱい。
09/04/11 09:31:30 bNSgGuY10
>>625
#IfWinActiveで特定のアプリにのみ有効なホットキーを設定
hotkeyでホットキーのオン・オフ切り替え
このあたりを使えば望みの動作が出来ると思う
俺はよくiniファイルの設定を読み込ませてホットキーを動的に設定したりオン・オフしたりさせてるが
それと同じ方法で実現できると思う
hotkeyコマンドに変数展開使うだけだし


629:名無しさん@お腹いっぱい。
09/04/11 09:37:44 e4COaq2Q0
>>625
「変数」は何処に存在するんだろうか?

; 起動毎にホットキーのOn/Offがトグルになるスクリプト
OnExit, OnExitSub
IniRead, IsHotkeyEnable, conf.ini, Hotkey, Enable, 0 ; 無ければ "0(=Off)"とする

If (IsHotkeyEnable) {
 Hotkey, IfWinActive, ahk_class Progman ; デスクトップのみ
 Hotkey, #1, Key1, On
 Hotkey, #2, Key2, On
}
return
; 終了時にフラグを逆転して終了
OnExitSub:
 IsHotkeyEnable := !IsHotkeyEnable
 IniWrite, %IsHotkeyEnable%, conf.ini, Hotkey, Enable
 ExitApp

Key1:
 MsgBox, Key1 Action
 return
Key2:
 MsgBox, Key2 Action
 return


630:名無しさん@お腹いっぱい。
09/04/11 10:36:03 iBHZiqEC0
>>627
ありがとうございました。

631:名無しさん@お腹いっぱい。
09/04/11 12:30:52 G+GUTcDI0
>>608
keybatという1500円のソフトで可能だよ。さっき試した出来たよ。
俺はこれからAHKに乗り換えた当初に同じことをやろうとして苦労した覚えがある。
レジストリいじるソフトを使用してF13を導入して解決した。レジストリいじれないならkeybatだね。
人気ないけど、いいソフトだと思う。キーカスタマイズスレで罵倒された楽しい思い出があるけどw

632:615
09/04/11 19:33:36 rh+NBoz70
>>629
iniに書き込んであります。

>>628,629
ヒントありがとうございます。
自分が思っていたような動作をするスクリプトが書けました。
とは言っても、約半分ぐらい629と同じですが。

お世話になりました!
ありがとうございました。

633:492
09/04/11 23:31:57 3TjMJxNW0
以前書いたくるくるスクロールが不細工だったので書き直し。
おまけでくるくるスクロールの関数とカーソル上下でスクロールする関数を同梱しました。
トラックボールを使っている人にしか需要は無いと思います。
URLリンク(lukewarm.s101.xrea.com)

634:名無しさん@お腹いっぱい。
09/04/11 23:34:26 YKimc9dt0
>>633
使わせていただきます!


635:名無しさん@お腹いっぱい。
09/04/11 23:47:34 oqoLxhVT0
リマップで質問です。特定キーをトリガにして、リマップの内容を変更するのがうまくいきません。
添削してもらえませんか?

--
vkAFsc130::PgDn ←デフォルト定義
vkAEsc12E::PgUp ←デフォ

vkADsc120::    ← 問題のトリガ
if flag = 100
{
vkAFsc130::PgDn  ←この定義で Duplicate してしまう
vkAEsc12E::PgUp
flag = 0
}
else
{
vkAFsc130::Down
vkAEsc12E::Up
flag = 100
}
return

636:名無しさん@お腹いっぱい。
09/04/11 23:58:49 e4COaq2Q0
そもそも、言語仕様にに沿ってない。つーか言語がめちゃくちゃなんだけど
>>615からのの流れを流用してHotkeyコマンド使うか、
リマップを捨てて、Sendでキー送るってカンジかな

後者なら↓みたいな感じ
kAFsc130::
 If flag = 100
  Send, {PgDn}
 Else
  Send, {Down}
 return

どうしてもリマップ捨てたくないなら AutoHotkey_L の #if 使う方がいいかも
#if (flag==100)
vkAFsc130::PgDn
vkAEsc12E::PgUp
#if (flag!=100)
kAFsc130::Down
vkAEsc12E::Up
#if

637:名無しさん@お腹いっぱい。
09/04/12 00:08:41 BvyA+lnB0
>>636
>そもそも、言語仕様にに沿ってない。つーか言語がめちゃくちゃなんだけど
滝汗

ありがとうございます。もうちょっと色々見てみます。


638:名無しさん@お腹いっぱい。
09/04/12 11:50:32 9mFGO0zQ0
無変換+zで、ひとつ下のウィンドウをアクティブに。
~vk1Dsc07B & z::
WinGetClass, classA, A
a=
WinGet, List, List,,,ningenshikkaku
Loop,%List%
{
Hwnd := List%A_Index%
SetFormat,Integer,H
WinGet,s,Style,ahk_id %Hwnd%
SetFormat,Integer,D
if((!(s&0x08000000))&&((s&0x80)|| !(s&0x80000000)))
{
WinGetClass, class, ahk_id %Hwnd%
if (a=1){
WinActivate, ahk_id %Hwnd%
break
}
if (class=classA)
a=1
}
}
return

639:638
09/04/12 13:07:26 9mFGO0zQ0
>>638
すみません、これはダメだわ。GOMPlayer等、見つけられないものもあるw、まあ手動で足していけばいいか。
キーボード中心環境なら、上にいくのも付け足せば、最前面表示とかに行けて便利?

Alt+Tabは順序が入れ替わって、使い辛いな。
無変換←→とかで、タスクバー順にアクティブにできたほうがいいけど、AHKでできるかな?

640:名無しさん@お腹いっぱい。
09/04/12 14:31:19 dIdsRb2N0
タスクバーの情報を取得するのは公式フォーラムにあるというのがここでのFAQ
URLリンク(www.autohotkey.com)

キーボード派のWindow切り替えなら、こういうemacsのiswitchライクなのも良いと思う
URLリンク(www.autohotkey.com)

641:名無しさん@お腹いっぱい。
09/04/12 15:25:54 9mFGO0zQ0
>>640
おお、㌧
上のは、情報が特殊なんだね。Dolphi製はTApplicationのほう取ってるし、hWndとかも何か特殊だ。
特殊だと思ったら、10進法でとってるのか。
TApplicationをどうにかしたら、タスクバー順にアクティブはできそうだね。

下のはいいね、好みw

642:名無しさん@お腹いっぱい。
09/04/12 16:41:10 RL+Ry9QM0
流行らせるページにwhileとかの説明が新しく追加されてるね。英語弱いので助かります。

643:名無しさん@お腹いっぱい。
09/04/12 20:46:21 bhv5GHsf0
1by1のビッグウィンドウを思い出したw

644:名無しさん@お腹いっぱい。
09/04/12 21:28:50 XLkAadI10
スレ違いっぽいけど
admin権限なしでCtrl<->CapsLock交換できるソフトってない?
autohotkeyでキー置換の大部分はできるんだけど
これだけ困ってる。

645:名無しさん@お腹いっぱい。
09/04/12 21:54:14 PppMsUH80
>>644
日本語ユーザーはやっぱりその壁にぶち当たるんだよな

で、なんでautohotkeyではこのキーだけ駄目なんだろう
内部で特殊な処理をしているのかな

646:名無しさん@お腹いっぱい。
09/04/12 22:26:34 r11nbAGs0
WheelAccel.ahkでIE上でホイールを早く回した場合に、スクロールが上手く加速されていないような気がします。
IE上で素早くホイールを回した場合でも、回転に応じたスクロールができるようになりませんでしょうか。

647:名無しさん@お腹いっぱい。
09/04/12 23:39:09 ln8RqTb30
IEのスムーズスクロールをOFFにする
A_EventInfo を考慮した加速方式にする

648:名無しさん@お腹いっぱい。
09/04/13 03:50:01 25xJ6v2w0
すみません、どなたかご教授お願いします。
プログラムに明るくなくて分かりづらい説明で申し訳ありませんが。

Photoshop使用時に「6」に
6::send +!r
という風にキーを割り当ててます。(ブラシのモードが変更されるショートカット)

それとは別にPhotoshopでは Shift+Alt+クリック で
「カラーサンプラーを配置する」という機能があるのですが、
どうもフォトショ使用中に時折、「6」を押した瞬間にクリックして
ブラシモード切替と同時にサンプラーを配置してしまうのです。

上手いこと「6」と同時くらいにクリックしても
Shift+Alt+クリック にならなくするような方策はないものでしょうか?

649:名無しさん@お腹いっぱい。
09/04/13 04:42:51 hmD/M1lx0
>>648
これを試してみては

6::
blockinput, on
send, +!r
blockinput, off
return


650:名無しさん@お腹いっぱい。
09/04/13 04:57:26 25xJ6v2w0
>>649
激減しました、ありがとうございます!

しかしガチャガチャ何度もやってると極稀にサンプラーが起動してしまうことがありました。
とりあえず大分改善されたのでとても助かります。

あつかましい話ですがついでにもう一つ質問させてください。
キーを押しっぱなしにすると連打が始まってしまいますが、これを
抑制するのってどうやればいいんでしょうか?

651:名無しさん@お腹いっぱい。
09/04/13 05:18:04 DVlSaX3W0
KeyWait, 6
return
にすればいいかもしれないね。
それか、6 up::にしてキーを離したときに送るか。

652:名無しさん@お腹いっぱい。
09/04/13 06:43:56 hmD/M1lx0
>>650
>>649でダメなら

#InstallMouseHook
6::
if !getkeystate("LButton", "P")
send, +!r
return


連打しないで押したままにしたいなら↓みたいな感じかな

a::
send, {a down}
keywait, a
send, {a up}
return

653:名無しさん@お腹いっぱい。
09/04/13 19:54:37 0vf0TAcu0
ソフトの使い方を常にポップアップ表示させるようなものを作りたいんですが
ソフトのウィンドウを動かした時に、一緒に説明の画面も追随するようなのって
どうやったら作れますか?

654:名無しさん@お腹いっぱい。
09/04/13 20:30:43 Ay3UPRR20
エスパー難しすぐる

自作GUIならOnMessage()使ってウィンドウメッセージの"WM_MOVE(0x3)"を拾う、
そうでないならタイマーでウィンドウ位置を監視して動いた稼働かを検知、

で、追従させたい窓を移動

655:名無しさん@お腹いっぱい。
09/04/13 22:22:03 H1zTlTqI0
>>644 が求めている解決方法ではないけど、
自分の場合は、ソフトでの解決はあきらめて、
Ctrl<->CapsLock交換できるキーボードを使っています。

656:名無しさん@お腹いっぱい。
09/04/14 00:22:52 +WvFDJJL0
>>654
なるほど、タイマー使う手がありますね。
サンクスです。

657:名無しさん@お腹いっぱい。
09/04/14 16:20:23 sa012nT50
Run,"hoge.exe"で外部のスクリプトやアプリを実行するとき、
ビープ音がなるんだけど、これを止める方法はないもんかな?

658:名無しさん@お腹いっぱい。
09/04/14 16:34:44 7q5WOPK90
うちではpingコマンドを定期的にルータに向けて発射させてるが、
意図的にsoundbeepコマンドを使わない限り、鳴らないけど?

659:名無しさん@お腹いっぱい。
09/04/14 17:12:09 D6tdSy390
Run, notepad
うん、無言で起ち上がる

660:名無しさん@お腹いっぱい。
09/04/14 17:27:38 19+rPi280
ウィルス対策ソフトの設定かな?
AutoHotkeyを除外すれば解決するんじゃないかと見た

661:657
09/04/14 19:02:25 sa012nT50
ウィルスソフト切っても鳴ってる。
キーに割り当てないで、スクリプトの先頭で、Run, notepad と書けば鳴らないで起動するけど、
キーに割り当ててから、キーを押してアプリやスクリプトを起動するときはビープ音が鳴ります。
他のPCのAHKのスクリプトでも、ホットキー押してアプリやスクリプトを起動してもビープ音なってたんだが、
まさか家だけの特別仕様?・・・w 
Zip版で入れたのと関係あんのかな・・・
鳴らしたり鳴らさなかったりするコマンドでもあるのかと思ったんだが。
まぁ、動作状況が分かりやすいといえなくも無いかなw、と。

662:名無しさん@お腹いっぱい。
09/04/14 19:22:49 eiTdV88b0
b::Run, notepad

をautohotkey.ini にを記述してBを押してみたけど
特に何の音もせず、xyzzyが起動した
(Terapperというソフトでnotepadの代わりにxyzzyを起動するようにしている)

663:名無しさん@お腹いっぱい。
09/04/14 19:31:03 7q5WOPK90
>>661
ahkのバージョンと、入手場所は?

うちでは、explorerで選択したファイルのハッシュを計算するため、
ホットキーをつかって、呼ばれた場所でハッシュ計算コマンドを呼び出してる。

こんな使い方するのは、ahk界隈では朝飯前だろうから
いちいちビープが鳴ってたら、全世界でクレームだらけになるぞw

664:名無しさん@お腹いっぱい。
09/04/14 19:42:22 M4uz39800
・何かのデスクトップテーマや常駐ソフトで音が鳴るようになってる
・本当のウィルスに感染してる
・PCの中にいる妖精さんが鳴らしている

665:名無しさん@お腹いっぱい。
09/04/14 20:33:27 sa012nT50
>>662
そのように、ためしに別の組み合わせのキーの横に直接記述したら、音が消えました。
普通に動いてるから気にしてなかったんだけど
スクリプトの記述のエラーのビープ音なのかも・・・。
>>663
>>全世界でクレームだらけになるぞw
そりゃそうだ。
>>664
たぶん妖精さんですねw

みなさんお騒がせしました。ごめんね。

666:名無しさん@お腹いっぱい。
09/04/14 21:20:21 j9JZmdvM0
>>665
①割り当ててるホットキーがすでに別のソフトに割り当てられててそっちで音がなってる。
②たとえばWin+Dを押したとき、エクスプローラにDキーが送られて、エクスプローラから「Dで始まるファイルなんてねえよ!」って言われて音が鳴る

ぱっと思いつくのはこれぐらい

667:名無しさん@お腹いっぱい。
09/04/14 22:50:52 9Q5al6/M0
コンパネの「サウンドとオーディオデバイス」の設定で
「プログラムの起動」に音が設定されているにイッピョ

668:名無しさん@お腹いっぱい。
09/04/14 23:00:00 McvR1AuZ0
>>667
+エラーだろうな

669:名無しさん@お腹いっぱい。
09/04/16 01:42:10 WuzwTPez0
代入について質問します
autohotkeyでは以下の二つの処理のうち、より早いのはどちらなのでしょうか。

a = test
a := "test"


670:名無しさん@お腹いっぱい。
09/04/16 02:04:46 mvpsM9MdP
>>669
URLリンク(lukewarm.s101.xrea.com)
最近のバージョンではどうか知らない

671:名無しさん@お腹いっぱい。
09/04/16 02:10:27 QXtfAzQn0
適当に作った。こっちでは、数値でも文字列でも 「=」 のほうが 「:=」 より速い
Gui, Add, ListView,Grid,Name|Count|Time(ms)
Loop, 3
 LV_ModifyCol(A_Index, 80)
Gui, Show
count := 1000 * 1000
Tests = Test1|Test2|Test3|Test4
Loop, PARSE, Tests, |
{
 StartTime := A_TickCount
 Gosub, %A_LoopField%
 Time := A_TickCount - StartTime
 LV_Add("", A_LoopField, count, Time)
}
return
Test1:
 Loop, %count%
  a = 1000
 Return
Test2:
 Loop, %count%
  a := 1000
 Return
Test3:
 Loop, %count%
  a = あいうえお
 Return
Test4:
 Loop, %count%
  a := "あいうえお"
 Return

672:名無しさん@お腹いっぱい。
09/04/16 05:16:49 qBUQoLG70
Version 1.0.48.01

673:669
09/04/16 08:07:16 WuzwTPez0
>>670-671
ありがとうございます。
昔から層だったのですか。


>>672


674:名無しさん@お腹いっぱい。
09/04/16 08:41:24 rRTU/mFz0
>>585
>数十万件ほどある2chのDAT自動分類とか、本文検索、カテゴリわけ、統計抽出で使ってる。
便利そうだなあ、うpおねがいできない?

675:名無しさん@お腹いっぱい。
09/04/16 16:03:00 DnQKjK+d0


676:名無しさん@お腹いっぱい。
09/04/16 16:29:05 dH1w2+Gu0


677:名無しさん@お腹いっぱい。
09/04/16 17:23:25 bLNrS1bm0


678:名無しさん@お腹いっぱい。
09/04/16 18:12:44 cHHoWky00


679:名無しさん@お腹いっぱい。
09/04/17 01:36:32 mo1/Vcwy0
>>671
じゃあ := の存在意義ってあるのかな?

680:名無しさん@お腹いっぱい。
09/04/17 01:39:57 EfTDXa450
:=は、右式で計算するときじゃね? と俺は理解して使い分けてるけど


681:名無しさん@お腹いっぱい。
09/04/17 03:32:56 XkaWyP6+0
計算しようとする分、遅くなるんだろうね。

682:名無しさん@お腹いっぱい。
09/04/17 21:58:16 xuJtArT2P
|=
の使い道が分からん

683:名無しさん@お腹いっぱい。
09/04/17 23:21:53 NeCnakzy0
扉を開けるって意味のAAじゃないのか?

684:名無しさん@お腹いっぱい。
09/04/17 23:34:41 s+XI67ya0
>>682
flags|=NEW_FLAG

685:名無しさん@お腹いっぱい。
09/04/18 00:06:21 1kiue+Dq0
Orのビット演算した結果を代入じゃないの?

686:名無しさん@お腹いっぱい。
09/04/18 00:29:50 kItLjanl0
ビット演算とか Or の概念自体がわからんのじゃね?
AHKのサンプルでも | じゃなく +で足し込んでフラグの説明してる場合が多いしな

687:名無しさん@お腹いっぱい。
09/04/18 10:36:33 tJm8WU8c0
インストーラー形式の方ではなくzip版AutoHotkey104801.zipで
MouseGesture2を使わせて貰おうと思うのですが
AutoHotkey104801.zipを解凍したフォルダに入っているのLibフォルダの中に
MouseGesture2.zipを解凍して出来たフォルダ一式を入れてAutoHotkey.exeを
実行してもドキュメントフォルダにAutoHotkey.ahkを作成するかを聞いてきて
yesにしてもnoにしてもMouseGesture2.ahkを読み込めません。
AutoHotkey.exeを実行しただけで、複数の.ahkを読み込みたいのですが
インストーラーでインストールしないと無理なのでしょうか?


688:名無しさん@お腹いっぱい。
09/04/18 10:37:58 VGVOYY6h0
低レベル過ぎ
流行らせるページで初歩を学んでこい

689:名無しさん@お腹いっぱい。
09/04/18 11:17:02 tJm8WU8c0
>>688
AutoHotkey.exeの実行は読んだのですが自分のやり方が間違っているので出来ません。
MouseGesture2など複数の.ahkをAutoHotkey.exeをクリックしただけで実行できる
具体的な方法を聞きたいのです。

690:名無しさん@お腹いっぱい。
09/04/18 11:19:11 YTnYPyoc0
>>689
やり方が間違ってるって分かるんなら解決できるだろ

691:名無しさん@お腹いっぱい。
09/04/18 11:23:56 tJm8WU8c0
流行らせるページを参考にしただけでは無理だったので聞いています。

692:名無しさん@お腹いっぱい。
09/04/18 11:26:32 TxHWsmXa0
#Include項を読めば、問題解決。
別々にexeに送ったほうがいいよ。includeしても問題が発生するだけ。ランチャ登録で、一発じゃん。

693:名無しさん@お腹いっぱい。
09/04/18 11:33:10 HfGyibd50
MouseGesture2 は単体で起動した方がいいね
でもこの調子じゃ使いこなすまでにかなり苦労しそうな雰囲気…

694:名無しさん@お腹いっぱい。
09/04/18 11:33:13 TxHWsmXa0
使用方法の「AutoHotkey.exeの実行」と
スクリプト仕様の「スクリプトの起動とAuto-executeセクション」も参照。
これで理解できないなら、聞くだけ無意味。初期の初期です。

695:名無しさん@お腹いっぱい。
09/04/18 11:42:06 kItLjanl0
色々便利な機能があるのは分かってるが組込みが面倒臭そうすぎて敬遠してるな>MouseGesture2
そこそこAHK暦ある人間ですらそんな状態なので、とりあえず単体起動で常用して
組込み(含むLIBでの自動組込み)は自力でAHK書けるようになってからにしたらいいと思う

696:名無しさん@お腹いっぱい。
09/04/18 11:51:36 TxHWsmXa0
マウ筋とAHKの組み合わせで必要十分だしね。
さらに踏み込みたいなら、MouseGesture2は非常に便利なんだけどね。
マウ筋を使いすぎて環境移動が面倒くさいのもあるけど。

ただ、ここでMouseGestureがあったらなとは、よく思う。
JaneStyleとかのマウスジェスチャーつきのソフトでは、よく思う。

697:名無しさん@お腹いっぱい。
09/04/18 12:03:30 tJm8WU8c0
>>688-696
付き合って頂きありがとうございます。
マウ筋からMouseGesture2への乗り換えの最中に問題が出てファビりました。
後出しで申し訳ありませんが、MouseGesture2とnamazu_ime_scr_v10201だけ
他のスクリプトとうまく(動いたり動かなかったり)読み込めなかったので質問しました。
マウ筋はv1.40になってかなり便利なのですが、もう少し自由度が欲しいので
ncludeを使ったりしてもう暫く色々やってみます。
最悪、MouseGesture2とnamazu_imeは単体で動かします。
皆さん本当にありがとうございました。

698:名無しさん@お腹いっぱい。
09/04/18 12:30:04 XnVnH0l70
経験則だが

MouseGesture.ahkはAuto-executeセクションで#includeするスクリプトの中では最後に記述する
なまず日記のスクリプトを#includeする場合はAuto-executeセクション以外の方がいい
※スクリプト内でReturnを使ってる場合はエラーが出るから

699:名無しさん@お腹いっぱい。
09/04/18 12:39:43 tJm8WU8c0
>>698
ありがとうございます。未だ奮闘中なので
>Returnを使ってる場合は
これかな?
なまずさん所、詳しく読んでみます。

700:名無しさん@お腹いっぱい。
09/04/18 12:51:20 UjDkIbnE0
インクルード(関数ライブラリ含む)の仕様上無理だってのはわかるけど
インクルード「される」側のAutoexecブロックとかプリプロセッサ命令(#NoEnvとか)を
有効にするかしないかを選びたいなぁと思う事はある。

701:名無しさん@お腹いっぱい。
09/04/18 17:57:57 1kiue+Dq0
たとえば、下の二つは個別ではきちんと動く
-----------------------------
Func_AAA()
return
Func_AAA(){
ToolTip,AAA
return
}
-----------------------------
Func_BBB()
return
Func_BBB(){
ToolTip,BBB
return
}
-----------------------------
けどIncludeすると下のようになって実行できない
-----------------------------
Func_AAA()
return ;ここで終了
Func_AAA(){
ToolTip,AAA
return
}
Func_BBB() ;ここまでこない
return
Func_BBB(){
ToolTip,BBB
return
}
-----------------------------

702:名無しさん@お腹いっぱい。
09/04/18 18:15:51 TxHWsmXa0
結局、全部統合して一つのスクリプトにするってだけだから、変数とかAuto-Executeとか理解しながらまとめるしかない。
競合したりすると原因究明が面倒くさいから、個別に管理してる。

703:名無しさん@お腹いっぱい。
09/04/18 19:32:24 14iQRRzH0
MouseGesture2にて
・条件定義タブで「種別=>ウィンドクラス」「値=>CabinetWClass」
・ジェスチャ定義タブで「定義名=>右↓→」「カーソル移動=>RB_DR_」
・動作割り当てタブで「Send,^w」と設定しました。
これで「右↓→」でウィンドウを閉じるようにできました。

ところがファイルを右ドラッグした時の右ドラッグメニュー「ここにコピー」等の
表示レスポンスが落ちました。
設定タブでタイムアウトを「200」にしましたが、まだ遅いと感じます。
できればファイルやフォルダのアイコン上ではマウスジェスチャーを無効化したいです。

下のサイトはマウ筋の設定ですが、まさにこれと同じ事で悩んでいます。
こういった設定はどうすればいいですか?
URLリンク(f57.aaa.livedoor.jp)

704:名無しさん@お腹いっぱい。
09/04/18 19:43:43 TxHWsmXa0
>>703
>>488のこれが使えるかも。
ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる

705:名無しさん@お腹いっぱい。
09/04/18 21:55:07 14iQRRzH0
>>704
ありがとうございます。
先日マウ筋から乗り換えたばかりの自分には少し難しいかもしれません。
自分の勉強不足です。
色々試してみます。

706:名無しさん@お腹いっぱい。
09/04/18 22:49:52 vwMG/qD80
条件定義で条件を作成し(例えば条件名を GestureCancel とする)
カスタム条件式で下記の何れかを登録(または複数登録)
MG_LvHitTest()
MG_TvHitTest()
MG_TreeListHitTest()
※関数の詳細はReadme.txtの335行目~の「●ユーティリティ変数・関数」を参照

ジェスチャ定義で RB_ を作成

動作割り当て
RB_ を選択
条件 GestureCancel
動作 MG_About()

これで以前と同様に扱えると思う

707:名無しさん@お腹いっぱい。
09/04/19 00:06:23 RYyoU1dL0
あるキーが押されたらループを抜けて次の処理へ、ということをやりたくて
以下のように書いていますが、タイミングによってはスリープに引っ掛かって
失敗してしまいます。ホットキーの利用も考えたのですがうまくいきません。
低レベルで申し訳ないのですが、どう書けばいいのでしょうか…?
(スリープ処理は残しておきたいです)

Loop
{
if ( GetKeyState("RETURN") = 1)
Break
Else
Sleep,100
}

708:名無しさん@お腹いっぱい。
09/04/19 00:11:10 zeE5du8S0
KeyWait, Return, D
msgbox, test


709:名無しさん@お腹いっぱい。
09/04/19 00:24:59 OzydvQTn0
KeyWait使うのが楽だと思うけど。。。
どうしてもSleepを残すのならば、ループ内でキーを拾えないのはしょうがない
ホットキーつかってフラグの上げ下げすりゃいいはず

Loop
 Go := false
 while (Go==false)
  Sleep, 100
  :

SomeKey::Go:=true

710:名無しさん@お腹いっぱい。
09/04/19 00:39:19 RYyoU1dL0
>>708-709
ありがとうございます!
実際はループ中に他の処理もしているので(省略してしまってすみません)、
KeyWait で止まってしまうのはまずかったのです。
フラグを立てる方法でうまくいきました。ありがとうございました!

711:名無しさん@お腹いっぱい。
09/04/19 17:31:21 85CwF9t90
GUIに現在時刻をリアルタイムで表示したいんですがどうすればよいのでしょうか?

712:名無しさん@お腹いっぱい。
09/04/19 17:44:32 tIMrGJMJ0
>>711
組み込み変数
%A_YYYY%年%A_MM%月%A_DD%日%A_Hour%時%A_Min%分

713:名無しさん@お腹いっぱい。
09/04/19 22:16:23 OzydvQTn0
; 簡易マウスジェスチャ関数
; ジェスチャの結果をLRUDの文字列として返す

GetGesture(timeout=1000, tipNo=0, sensitivity=30) {
 CoordMode, Mouse, Screen
 CoordMode, Tooltip, Screen
 ButtonName := RegExReplace(A_ThisHotkey, "^\W+|\s.+", "", "", -1)
 MouseGetPos,nx,ny
 qp := ATan(1), lastDir = ""
 while GetKeyState(ButtonName, "P") {
  if (A_TimeSinceThisHotkey > timeout && !gesture) {
   if (tipNo)
    Tooltip,Timeout, x+16, y+16, %tipNo%
   break
  }
  MouseGetPos,x,y
  dx:=x-nx, dy:=y-ny
  if (tipNo)
   Tooltip, %gesture%, x+16, y+16, %tipNo%
  if (Mod(A_Index, 10)!=1 || Sqrt(dx**2 + dy **2) < sensitivity)
   Continue
  rad := ATan(dy/dx)
  dir := (rad < qp && rad > -qp ) ? ((dx > 0) ? "R" : "L") : (dy>0) ? "D" : "U"
  if (lastDir != dir)
   gesture .= dir
  lastDir := dir, nx:=x, ny:=y
  Sleep, 20
 }


714:名無しさん@お腹いっぱい。
09/04/19 22:18:27 OzydvQTn0
; 続き
 if (!gesture) {
  Send, {%ButtonName% Down}
  KeyWait, %ButtonName%
  Send, {%ButtonName% Up}
 }
 if (tipNo)
  Tooltip,,,, %tipNo%
 return gesture
}

利用例)

SetTitleMatchMode, RegEx

#IfWinActive, ahk_class CabinetWClass|ExploreWClass|MozillaUIWindowClass|IEFrame
$RButton::
 g := GetGesture(1000, 20)
 Send, % (g=="R") ? "{Browser_Forward}" : (g=="L") ? "{Browser_Back}" : (g=="LDR") ? "^w" : ""
 return


715:名無しさん@お腹いっぱい。
09/04/20 02:35:47 MR7L4s8s0
>>712
ソフト起動時の時間しか表示してくれません・・・。
できればリアルタイムで表示が変わっていくようにしたいんですが

716:名無しさん@お腹いっぱい。
09/04/20 03:06:03 NtrPHVPz0
>>715
そりゃそうさ。
Gui,Showをするか、GuiControlで変えるかしないと。
チカチカする場合は、
SetBatchLines, -1 ; maximize script speed!
SetWinDelay, -1
を書けば緩和されるかも。

717:名無しさん@お腹いっぱい。
09/04/20 03:14:34 MR7L4s8s0
>>716
ありがとう!
明日試してみます。

718:名無しさん@お腹いっぱい。
09/04/20 05:28:09 JG3J5CMR0
変数名の中に変数を入れた場合その変数を呼び出すにはどうすればよいのでしょうか?
たとえば

no=1
name%no%=taro

こうした場合%name1%では呼べますが%name%no%%では呼べません。

719:名無しさん@お腹いっぱい。
09/04/20 08:57:33 dpb8VPO80
:=

720:名無しさん@お腹いっぱい。
09/04/20 21:17:57 i3tTOHu+0
>>718
no=1
name%no%=taro
dainyu:=name%no%
msgbox, %dainyu%

こんな感じにしてる。

721:名無しさん@お腹いっぱい。
09/04/20 22:30:21 WxIZTvGU0
1.0.48.02キター

722:名無しさん@お腹いっぱい。
09/04/20 23:22:48 fqH4UQW20
変数の参照の仕方は変態的だよなぁ

a1 = ああああ
a2 = いいいい
a3 = うううう
a4 = ええええ
a5 = おおおお
Loop, % 0+2+3 {
 Tooltip, % "a" . A_Index " = " . a%A_Index%, A_Index*10 , % A_Index*20, %A_Index% ; ※
 Sleep, 2000
}

※で色々な参照方法があるけど通るってある意味すごい

723:名無しさん@お腹いっぱい。
09/04/20 23:28:21 M2RTDhVt0
このスレってなんですか
ウイルススレですか

724:名無しさん@お腹いっぱい。
09/04/21 00:03:25 dpy2yIyN0
タスクバーの右クリックで出るメニュー open をみると
履歴らしきものが出ますが、不要な場合
履歴を記録しないような設定は出来ますでしょうか。

725:名無しさん@お腹いっぱい。
09/04/21 00:29:47 sZR4frkX0
最前面ってのはできるけど指定ウィンドウの前面って配置させることはできません?

726:名無しさん@お腹いっぱい。
09/04/21 01:14:56 +3mbXAWQ0
コマンド1発じゃできないだろうけど、できると思うよ

727:名無しさん@お腹いっぱい。
09/04/22 17:30:52 I73rPchU0
;の後に書くコメントは日本語だとまずいですか?
英語版windowsで使えなくなるとか、何かで問題が起こるとか、
その様な不具合はありますでしょうか?

728:名無しさん@お腹いっぱい。
09/04/22 17:45:26 zXLOeeEn0
無問題

729:名無しさん@お腹いっぱい。
09/04/22 17:46:05 I73rPchU0
即レスthxです。

730:名無しさん@お腹いっぱい。
09/04/22 18:34:33 lbTzV7q7P
>>727
もしかすると、SetTimerコマンドを使っている場合、
コメントにダメ文字(>>3)が入ってるとまずい場合があるかも

先週くらいからコメントに「~」とかが入っているスクリプトを作って使い始めたんだけど、
何回か、“NTMARTA.DLLは正しいイメージファイルではありません” というエラーメッセージが出て
他のアプリケーションを巻き込んで挙動がおかしくなることがあった
(ちょっと調べたところでは、全く処理が行われていない次回サブルーチン起動待ちの状態でエラーが出ている)
おとといくらいから該当部分のコメントを修正して様子見をしてるんだけど、いまのところエラーが出てないような感じ

731:名無しさん@お腹いっぱい。
09/04/22 20:27:38 Cv0jfypZ0
URLリンク(gaatsu.ps.land.to)


Gui, Add, Radio ,vRadioA , aaaaa
Gui, Add, Radio ,vRadioB , bbbbb
Gui, Add, Radio ,vRadioC Checked1, Manual
Gui, Add, Edit ,vEdit ,
Gui,Show


おおざっぱにこういうのつくってるんですがaaaaa、bbbbbにチェックが入ってると
Manualのテキスト入力欄がグレイアウトして、入力できないようにするには
どうすればよいのでしょうか?

732:名無しさん@お腹いっぱい。
09/04/22 21:00:51 R/5HKiXn0
Gui, Add, Radio ,vRadioA Gtext_usable, aaaaa
Gui, Add, Radio ,vRadioB Gtext_usable, bbbbb
Gui, Add, Radio ,vRadioC Gtext_usable Checked1, Manual
Gui, Add, Edit ,vEdit,
Gui,Show
Return

text_usable: ;ラジオボタンの操作に連動したルーチン
GUI, Submit, NoHide
If(RadioA or RadioB = 1){
GuiControl, Enable0, Edit,
}
Else if RadioC = 1
GuiControl, Enable1, Edit,
Return


733:名無しさん@お腹いっぱい。
09/04/22 21:01:40 zXLOeeEn0
Gui, Add, Radio ,vRadioA gEvent1, aaaaa
Gui, Add, Radio ,vRadioB gEvent1, bbbbb
Gui, Add, Radio ,vRadioC gEvent1 Checked1, Manual
Gui, Add, Edit ,vEdit ,
Gui, Show

Event1:
Gui, Submit, NoHide
GuiControl,Disable%RadioC%,Edit
Return


734:名無しさん@お腹いっぱい。
09/04/22 21:13:52 pLtZjKfp0
特定のプログラムだけスリープさせるのってできましたっけ?

735:734
09/04/22 21:36:21 pLtZjKfp0
api32 のsuspendthread を使ってやってみます

736:名無しさん@お腹いっぱい。
09/04/22 22:41:47 JfqAvQ+s0
選択した文字列の最初の行をファイル名.txtで保存するahk教えて君

737:名無しさん@お腹いっぱい。
09/04/22 22:48:24 zXLOeeEn0
以下を何らかのイベント(ホットキーが便利)をトリガとしてで処理させる
① (クリップボードを待避)
② ^cを送る
③ クリップボードが読めるのを待つ
④ PARSING LOOP を使ってクリップボードを行毎に処理させる
⑤ 1ループ目で、行内容を別変数に保存してループ終了
⑥ ファイル出力コマンドで吐き出す
⑦ (待避したクリップボードを戻す)

①⑦はなくても良い
^cでコピー出来ない場合は別の方法を考える

738:名無しさん@お腹いっぱい。
09/04/22 23:09:07 JfqAvQ+s0
#c::
Send,^c
ClipWait
SetEnv,word,%clipboard%
ファイル出力

こうですか?わかりません

739:名無しさん@お腹いっぱい。
09/04/22 23:55:14 zXLOeeEn0
④ Loop, PARSE を使う
  区切り文字は `n 。先頭・最後の Tab, 半角スペース、 `r などは除外した方がいい
  ※ クリップボード内容を他の変数に代入しないでも文字列分割ループで参照できる
⑤ ここは④のループ内。やる事やったらすぐ Break。(1行目だけ欲しいから)
  ファイル名代入時に禁則文字を置換した方がベター
⑥ FileAppend を使う
  出力内容は Clipboard そのもの。ファイル名は⑤で取得したもの。
  このコマンドは常に追記になるので、事前に IfExist て存在したとき FileDeleteしたほうが良い
  出力フォルダを変えたい・日時を入れたいとかなら、 A_MyDocuments, A_Day などの「組み込み変数」を使う

740:名無しさん@お腹いっぱい。
09/04/23 00:15:01 acO3R8MP0
このスレってautohotkeyの海外のwikiのように
鋭い指摘やおもしろい手順がいくつもあるよな
勉強になるわ

741:名無しさん@お腹いっぱい。
09/04/23 00:16:45 JNriN8sz0
>>732,733
できました。ありがとう!

742:名無しさん@お腹いっぱい。
09/04/23 00:32:02 K/YTztcc0
>>732
横レスですまんが
>If(RadioA or RadioB = 1){
これは
RadioA = 1 or RadioB = 1
みたいなもの?

743:名無しさん@お腹いっぱい。
09/04/23 08:38:13 ehgiERWq0
Radioなら1か0だから、それと等価ではある
個人的には後者のように素直に書くか、
いっそのこと if ( RadioA or RadioB ) の方が明快だと思うけどね

744:名無しさん@お腹いっぱい。
09/04/23 08:39:08 neftGxox0
#IfWinActive, aaa
^Numpad9::

#IfWinActive, bbb
<^Numpad9::
>^Numpad9::

↑のように#IfWinActiveのどこかで、左か右かのモディファイアキーを使用する設定にしてると
aaa がアクティブな時に Ctrl+テンキー9 を押しても機能しないのですが、
これは仕様なのでしょうか?

念のためにAutoHotkey.iniをクリアして↑のホットキーだけで試してみたのですが、同じ結果になりました。

745:名無しさん@お腹いっぱい。
09/04/23 17:01:08 7IN0MA170
Ver104802 で試してみたけど、(今のところ?)修飾キーに < > を利用すると
< > 無しの同一ホットキーが効かなくなるみたいやね。
これは同一スクリプト内だけの問題で、スクリプトを別にすると効くみたい。

スクリプト内で < > を利用する場合、左右の区別が不必要でも
< > を記述して対応するのが簡単かも。

#IfWinActive, aaa
<^Numpad9::
>^Numpad9::
send, a
return

#IfWinActive, bbb
<^Numpad9::send, b
>^Numpad9::send, c


746:名無しさん@お腹いっぱい。
09/04/23 19:44:43 Z06C8ITC0
GUI, Add, Text,, %clipboard%
GUI, Show

初歩的な質問で申し訳ありませんがクリップボードの内容が変更したら
表示も同時に変わるようにするにはどうすればよいのでしょうか?
Redrawオプションの使い方がいまいちわかりません・・・。

747:名無しさん@お腹いっぱい。
09/04/23 19:45:36 IDkO4Joj0
OnClipboardChange

748:736
09/04/23 19:55:54 sSOdcq6M0
>>739
親切にありがとう

#c::
Send,^c
ClipWait
StringSplit, name, clipboard, `,.`n%A_Tab%, %A_Space%
FileAppend,%clipboard%,D:\memo\%name1%.txt

こんな感じで行き詰っています。
ファイル名取得できまへんがな

749:名無しさん@お腹いっぱい。
09/04/23 20:30:30 Z06C8ITC0
>>747
ありがとう
でも再描画の仕方がわからない・・・。

750:名無しさん@お腹いっぱい。
09/04/23 22:24:24 Baw+u3zK0
>>748 でもそれなりに動くけどな。
区切り文字がカンマ(,)またはピリオド(.)またはタブで、前後の空白除去、って動作だけど
思った通りなんだろうか。

テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
FileAppendでエラーになっているんじゃないかと予想。
完成するまではMsgBoxとかで変数内容確認すると良いよ。

あとエラーかどうかは、ErrorLevel調べれば分かる。
文字列置換(StringReplace か RegExReplace)で引っかからない文字にすればいい。

>>749
GuiControl コマンド

751:名無しさん@お腹いっぱい。
09/04/23 22:45:13 neftGxox0
>>745
レスありがとうございます。
やっぱり仕様なのかなあ・・・

752:名無しさん@お腹いっぱい。
09/04/24 00:13:08 4ogwzjQN0
GUI, Add, Text,Vaaa, %clipboard%
GUI, Show
return
OnClipboardChange:
GuiControl, MoveDraw, aaa,
return
GuiClose:
Exitapp

わからん・・・。

753:名無しさん@お腹いっぱい。
09/04/24 00:14:45 +WwSzOjf0
>>647
誰かそれを作った人はいませんでしょうか?

754:736
09/04/24 00:27:01 umX25vaH0
>>750 thx
> テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
それでしたw

あとひとつだけ、
StringReplace, fname, name1, %A_Tab% \ / : * ? " < > | ,, ALL
複数の検索文字列はどう書けばいいんでしょうか?

755:名無しさん@お腹いっぱい。
09/04/24 01:14:10 4Tp5poaX0
>>754
以下から好きな(もしくは自分で改造できる)方法で
(どれも禁則文字をアンダースコアに変換する)

① StringReplaceを指定文字の回数頑張る
StringReplace, FileName, FileName, \, _
StringReplace, FileName, FileName, /, _
 :

② ①を単純化するために検索文字リストを作成してループで回す
NG = \/:*?"<>|
Loop, PARSE, NG
  StringReplace, FileName, FileName, %A_LoopField%, _

③ 正規表現でやる
FileName := RegExReplace(FileName, "[\\\/\|\?\*:<>""\t]", "_", "", -1)

※ \(0x5c)に関しては誤爆がありうるので注意(BREGEXPなどを使えば回避できるが・・・)

756:名無しさん@お腹いっぱい。
09/04/24 09:01:46 iP7K7SB40
ラジオボタン
途中で別のコントロールを追加すると、次からは新しいグループになる。

同じグループにすることってできないだろうか・・・。

757:名無しさん@お腹いっぱい。
09/04/24 11:18:44 BW5MCYnb0
今気づいたけど

組み込み関数の引数にコマンドライン引数を指定する事って出来ないんだな
a = %1%
とか一々しないといけないのは面倒

758:名無しさん@お腹いっぱい。
09/04/24 20:36:29 umX25vaH0
>>755thx
#c::
Send,^c
ClipWait
StringSplit, name, clipboard, `r, %A_Space% %A_Tab%
fname := RegExReplace(name1, "[\/\|\?\*:<>""\t]", "_", "", -1)
FileAppend, %clipboard%, D:\memo\%fname%.txt
MsgBox,64,,%fname%.txt`rを保存しました。,2
return

ばっちりです!

759:名無しさん@お腹いっぱい。
09/04/24 22:41:32 4Tp5poaX0
おめ。

#cを連打してみると不具合が出るよ(ファイル内容を確認すれば分かる)
そのときは >>739の⑥



760:名無しさん@お腹いっぱい。
09/04/25 13:20:37 RzJzru2Y0
NoCloseでクローズボタンの無効化をしたいのですが、
ウィンドウ生成とともに無効化されるようになりません。
ショートカットキーによる無効/有効のトグルはできるのですが、
Rulesに ahk_class Notepad と書いた状態で notepad を起動しても、
新規ウィンドウのクローズボタンは有効のままです。
Disable close buttons on Window Creation
のチェックボックスはチェックしています。
なぜRulesの記述が有効にならないのか
わかる方がいましたらご助言お願いします。

761:名無しさん@お腹いっぱい。
09/04/25 15:24:35 LVJjcW7S0
XPのExplorerで、ファイルをドラッグアンドドロップしはじめると、
マウスカーソルが禁止マークになって、
掴んだファイルが半透明で表示されます。

このとき、マウスの左ボタンから手を離す前に
掴み中であることを識別して別の処理をしたいのですが、
掴んでるファイル名を取得する方法はないでしょうか。

762:名無しさん@お腹いっぱい。
09/04/25 16:54:54 KzAWR4DV0
たまたま似たようなの作ってた。

; Button Up直前にGUIを置いてファイルを取得する
Gui, -Caption -ToolWindow +AlwaysOnTop
Gui, Show, w3 h3 Hide

pattern := "ExplorerWClass|CabinetWClass"

LButton::
 Send, {LButton Down}
 KeyWait, LButton
 IfWinExist, ahk_class SysDragImage
 {
  CoordMode, Mouse, Screen
  MouseGetPos, x, y, hwnd, classNN
  WinGetClass, class, ahk_id %hwnd%
  If RegExMatch(class, pattern)
   Gui, Show, % "NA x" (x-1) " y" (y-1)
 }
 Send, {LButton Up}
 Gui, Hide
 return

GuiDropFiles:
 MsgBox, %A_GuiEvent%
 return


763:名無しさん@お腹いっぱい。
09/04/25 17:08:39 Y2iaPllI0
おーありがとうございます!
自スクリプトに組み込んで活用させていただきます。

764:名無しさん@お腹いっぱい。
09/04/25 23:47:43 Aak6Bmgi0
だれか、ahk の日本語解説本、書いて下さい。
英語は細かいところがわからなくて困る。

765:名無しさん@お腹いっぱい。
09/04/26 00:14:17 RsidKdjm0
>1

766:名無しさん@お腹いっぱい。
09/04/26 00:42:15 XR0J5Yoc0
これだな。2007/09/05だから少々古い。
URLリンク(www.flib.jp)

767:名無しさん@お腹いっぱい。
09/04/26 15:13:57 AJINZZJZ0
exeからahk取り出せませんか?

768:名無しさん@お腹いっぱい。
09/04/26 15:20:55 7UkZFFcM0
>>767
できます。パスワードなければ

769:名無しさん@お腹いっぱい。
09/04/26 15:29:58 AJINZZJZ0
パスはつけてないんですがどうやってソース取り出すか教えてください

770:名無しさん@お腹いっぱい。
09/04/26 15:33:35 E78MgH1L0
exe2ahkでググレクズ

771:名無しさん@お腹いっぱい。
09/04/26 15:38:55 AJINZZJZ0
>>769,770
ありがとう

772:名無しさん@お腹いっぱい。
09/04/26 16:30:26 yHBXLU9I0
::a::autohotkey{ENTER}
の動作にツールチップ(一秒後に消える)
を着けたいのですがうまくいかず困っています。
RemoveToolTip:の部分でエラーを出されてしまいます。

a::
send ,autohotkey {enter}
ToolTip, AHK
SetTimer, RemoveToolTip, 1000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return

なにぶん最近いじり始めたばかりなので
根本的なところで間違えてるかもですが
問題点を教えてください。
よろしくお願いします。


773:名無しさん@お腹いっぱい。
09/04/26 17:19:15 ViVhDQ+t0
>>772
2行目のsendの後が全角スペースになってる。
あとsendで送られたのがautohotkeyじゃなくてutohotkeyになった。
a::を$a::に変えたら直った。

どんなエラーが出てたのかわからんけど、基本的にそのままで行けた。

774:名無しさん@お腹いっぱい。
09/04/26 17:52:28 PRYSHYE50
> SetTimer, RemoveToolTip, -1000

で1度だけの呼び出しに出来るよ

775:名無しさん@お腹いっぱい。
09/04/26 21:23:21 yHBXLU9I0
>>773,774
レスありがとうございます。

>>773の方法だとうまくいかないようです。
エラーは

Line Text:Removetooltip
Error:Duplicate label
The program will exit.

です。
環境が違うせいなのかな?
当方環境 AHK v1.0.48.02 OS:VistaHP32bit

>>774の方法で後半部分を削ると動きました。

::a::autohotkey{ENTER}
での動作に比べて動作速度が遅くなるのは仕方ないのでしょうか?
SendMode Inputとか入れてもあんまり効果ないようです。



776:名無しさん@お腹いっぱい。
09/04/26 22:35:29 PRYSHYE50
>>775
a::
Send, autohotkey {enter}
  ↓
Send, a ; ココで同サブルーチンが呼ばれてしまう。(>>5参照)
Send, u ; これ以降は普通に動作
  :
Send, {Enter}

> 動作速度が遅くなるのは仕方ないのでしょうか?
SetKeyDelay

777:名無しさん@お腹いっぱい。
09/04/26 23:18:41 yHBXLU9I0
>>776
レスありがとうございます。
SetKeyDelayを使用して十分な速度で動くようになったのでこれで運用してみようと思います。

>>775の時はこのスクリプトの前の他のスクリプトで既にRemoveToolTip:を使用していたため
RemoveToolTip:の部分でエラーを吐いていたようです。
WhichToolTipのあたりを勉強してきます。


778:名無しさん@お腹いっぱい。
09/04/27 00:09:04 +ovk7Hbu0
>>766
> これだな。2007/09/05だから少々古い。
> URLリンク(www.flib.jp)

ありがとうございます。
しかし、専用viewer が怪しそうで、downloadしなかったので、見られませんでした。
残念

779:名無しさん@お腹いっぱい。
09/04/27 11:31:05 0QYIMn790
書籍の形にこだわる理由は何?
流行らせるページはなんでスルーなの?

780:名無しさん@お腹いっぱい。
09/04/27 12:05:09 /pHC43gt0
本の宣伝にならないからw

という冗談は置いておいて、

流行らせるページも万能じゃないし、
もうちょっと優しめに書かれた入門書が欲しいという初心者がいても不思議じゃないと思うけど

781:名無しさん@お腹いっぱい。
09/04/27 12:40:58 +rxhALv90
If Var1 = %Var2% と If (Var1=Var2) とか、文法にずいぶん癖があるからなあ
最初は俺も苦労した

782:名無しさん@お腹いっぱい。
09/04/27 17:00:26 0QYIMn790
いや、入門レベルならそれこそググればブログなどで取っかかりから説明してるとこ沢山見つかるっしょ

英語云々書いてるってことはわざわざ原点に当たってるみたいだし
むしろより高度な方向の解説を求めてるのかと思ったんだけど。

783:名無しさん@お腹いっぱい。
09/04/27 19:20:25 HMa7F1Xh0
>>778
てかそれ、流行らせるページの人が書いてるものでしょ

784:名無しさん@お腹いっぱい。
09/04/27 21:17:12 ZpVxt0r00
わかりやすい書籍があれば
どこででも読むかたちで予習復習できるじゃん

785:名無しさん@お腹いっぱい。
09/04/27 22:16:23 wELKguDV0
まず前金で200万振り込んでくれ

786:名無しさん@お腹いっぱい。
09/04/27 23:42:24 l7+SdciM0
>>781
前者はわかるが後者はなんだい?


787:名無しさん@お腹いっぱい。
09/04/28 00:11:36 KKp3NETS0
等価だよ
IfEqual, Var1, %Var2%
If Var1=%Var2%
If (Var1=Var2)

こういうのも通るし
count=0
Loop {
 If (count++==3)
  Break
 MsgBox, % A_Index
}

788:名無しさん@お腹いっぱい。
09/04/28 01:01:30 E1vvN/jt0
>>787
ありがとう
最後の例はすごいな
そういう発想はなかった

789:名無しさん@お腹いっぱい。
09/04/28 08:49:47 XnR93Z5I0
>>679 の := の話と似てるな
:= や if() は、式を書ける分だけ一般の高級言語に近い仕様

ahkは発展途上の過程で色々盲腸的な部分が残ってるんで分かりにくいね

790:名無しさん@お腹いっぱい。
09/04/28 09:00:55 tUgDcu7Y0
>>787の3つのIF、速度が違ったりするのかな

791:名無しさん@お腹いっぱい。
09/04/28 11:14:37 KKp3NETS0
ちょっとテストしてみた。1万回ループしてms単位の差がでてきた。
バッチ的に回すにしても他の処理の方が圧倒的に重いだろうし、気にするほどじゃない。

792:名無しさん@お腹いっぱい。
09/04/28 14:00:29 tUgDcu7Y0
>>791
てことは if() に統一して問題無さそうだね。ありがと。

793:名無しさん@お腹いっぱい。
09/04/28 15:18:00 6TUioa2p0
if()で使うけど、結局は%%つけちゃったり、""をつけ忘れたりする。

794:名無しさん@お腹いっぱい。
09/04/28 17:58:54 cLThndOM0
既出かもしれんが、autohotkey も、なでしこ みたいにbat偽装しても動くんだな。便利だわ。

;@echo off
;"%~dp0Autohotkey.exe" "%~0" %*
;exit
;rem Autohotkey.exeのあるフォルダに hogehoge.bat で保存。
;rem このバッチにファイルをドロップしてみる。
;rem 下記にAHKのスクリプトを記述する。
tmpLimit=%0%
Kari:=""
Loop
{
KariI:=%A_INDEX%
KariR:=chr(13)
kari=%kari%%KariI%%KariR%
if(tmpLimit=A_INDEX)
break
}
msgbox,%kari%

795:名無しさん@お腹いっぱい。
09/04/28 18:10:30 BorXmBFr0
>>794
できない言語を探す方が難しいと思うよ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch