[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/10 00:39 / Filesize : 279 KB / Number-of Response : 813
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

AutoHotkey スレッド part7



1 名前:名無しさん@お腹いっぱい。 [2008/12/31(水) 12:39:34 ID:ROX9gd900]
■公式
www.autohotkey.com/

■解説
AutoHotkeyを流行らせるページ
lukewarm.s101.xrea.com/

■過去スレ
1 pc7.2ch.net/test/read.cgi/software/1098531338/
2 pc7.2ch.net/test/read.cgi/software/1129836713/
3 pc11.2ch.net/test/read.cgi/software/1157043396/
4 pc11.2ch.net/test/read.cgi/software/1184556627/
5 pc11.2ch.net/test/read.cgi/software/1201502896/
6 pc11.2ch.net/test/read.cgi/software/1219130051/

関連リンク>>2以降も参照

496 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 01:16:17 ID:e7LMny/o0]
autohotkey.ini に includeで

#Include kurukuruscroll.ahk

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

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


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

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

499 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 08:45:00 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:41:42 ID: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 mailto:sage [2009/03/21(土) 09:42:42 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:43:29 ID: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 mailto:sage [2009/03/21(土) 09:44:06 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:50:33 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 17:16:25 ID:5yWBri8L0]
横からすみません。
ググったらあんまりヒットしなかったので、以前貼られていた
DoubleKey関数紹介しておきますね。
出展:www.donationcoder.com/Forums/bb/index.php?topic=5926.msg41894

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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 17:28:06 ID:QyANxbob0]
>>492のスクリプトを縦スクロールじゃなくて、横スクロールに
するにはどうすればいいんでしょうか?

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

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

509 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:09:14 ID:H5O5lVNo0]
リロってなかった。蛇足スマソ

510 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:27:06 ID:HbFBHhgK0]
ぶっちゃけ、あっちのフォーラム行けばいくらでもあるけどね…

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

512 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 19:39:14 ID:5yWBri8L0]
>>507
申し訳ありませんでした

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

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

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

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



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

516 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:46:37 ID:T0zgn4OC0]
流行らせるページのホイールリダイレクトでもいいんじゃね

517 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:56:01 ID:4c0Fopck0]
アクティブにしつつスクロールするなら両方

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

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

519 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 12:46:54 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 17:35:30 ID:Rn9QKfmc0]
MouseGesture2の設定で動作割り当てのキー操作を発生させるのパラメーターに
無変換キーの2回押しを設定したくて{無変換}{無変換}とやってみたのですが
認識してくれません。無変換キーは何で登録すれば良いでしょうか?

521 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 17:37:47 ID:Biaw3oNa0]
>>520
ttp://lukewarm.s101.xrea.com/KeyList.html

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

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

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

524 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 09:06:05 ID:Y2hrPoG60]
とりあえず転載、ID:GrExewU20 と ID:Rn9QKfmc0 はモリタポ用意して制作者の教えを乞え
lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/123

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



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



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

526 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:36:14 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:36:56 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:39:05 ID:WUKQO+dS0]
あ、ウィンドウクラスは必要ないので↓は要らないや・・・
WinGetClass, m_class, ahk_id %m_id%

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

530 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 13:54:01 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/24(火) 23:15:50 ID:mXwaygr80]
多重起動を検知したくて以下のようにしたんだけど、
除外タイトルって効いて無い
それともPIDとかでの除外は無理なのかな

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


532 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 01:46:19 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 08:36:04 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 13:01:45 ID:UMyjgm290]
>>525
俺はchangekeyでF13を割り当ててるよ。



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

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

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

537 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 06:07:49 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 09:02:50 ID:r4Tse8HJ0]
Jane(クラスがTMAainWindとTApplication)だったりしないだろうか

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

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

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

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

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

541 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:34:46 ID:/i446DAf0]
>>540
すいません。
自己解決しました。

542 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:38:19 ID:CODN8xT10]
何を間違えていたのか気になる
教えて

543 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:42:30 ID:r4Tse8HJ0]
Send, return

544 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 19:22:46 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:30:02 ID:s6sjDdIo0]
いやあ、規制長かった。
どうでもよくなったw

546 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:34:24 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:47:26 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 06:38:33 ID:wyAVApH80]
>>547
これいいね。Libフォルダ行き、決定。

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

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

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

551 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 14:29:42 ID:pOBhf47V0]
WinGet, status, MinMax, hogehoge

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

553 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 15:41:55 ID:mk90UFZl0]
WinGetレ

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



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

556 名前:552 mailto:sage [2009/03/29(日) 16:22:07 ID:x2HXBG8DP]
>>554
そうでしたか
どうもありがとうございました

557 名前:549 mailto:sage [2009/03/30(月) 00:10:07 ID:rej68raf0]
>>555
おお動いたよ
おもしろいねこれ

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


559 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/30(月) 03:27:33 ID:lQv120RA0]
>>558
#persistent
SetTimer, IME_GET, 500
return
IME_GET:
Tooltip,% IME_GET()
return

560 名前:558 mailto:sage [2009/03/30(月) 07:57:20 ID:rej68raf0]
>>559
ありがとうございます!
非常に助かりました!

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

562 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 14:34:53 ID:V9eOhI1h0]
>>561
>>492

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

564 名前:563 mailto:sage [2009/03/31(火) 16:24:29 ID:DLXcLh2K0]
自己レス。
WinGetPosでProgram Managerを指定してデスクトップのサイズを
取得すればいいのかな?と今気付いた。



565 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 17:59:07 ID:ppgb+fKo0]
>>563
SysGet

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


567 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:54:33 ID:V9eOhI1h0]
SomeKey::
Send, {RButton Down}
Sleep, 500
Send, {RButton Up}
return

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

568 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:55:24 ID:V9eOhI1h0]
あ、500msになっとる・・・

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

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


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

572 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 19:52:53 ID:81tLNstp0]
>>570
Process,ExistとかWinGetとかWinGetPosとか使う

573 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 20:11:31 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 22:28:53 ID:81tLNstp0]
OnMessageでできるんじゃないかな。



575 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/02(木) 03:15:35 ID:dUEx8qZ/0]
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/124-
今年も嘘なの?

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

577 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 12:00:41 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 12:06:35 ID:zJiZ72fS0]
>>576の続き
VistaだとGuiをDestroyすると、そのGui番号ではGuiが表示できなくなるみたい

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

580 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 13:56:52 ID:xW9QnJcO0]
そんなこともない
だがCapsLockをどうにかしたいのなら諦めれ

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

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

583 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 14:34:05 ID:mA/w516g0]
>>581
あ、俺ガイル

584 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:03:21 ID:FNUcueKP0]
ほんとこのソフトすごいよね便利すぎてハマるの分かる



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

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

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

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

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

589 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 18:46:06 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/06(月) 16:01:58 ID:Z06B8II+0]
AVGがあると、Ahk2Exe.exeでコンパイル失敗するみたいね。
常駐シールドの例外設定すればいいらしい。

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

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

592 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 09:21:26 ID:tWsUW9OG0]
前のと比較すればいいだけでは

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

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



595 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 19:45:06 ID:CUjFaHh90]
Q: ファイルパスに駄目文字があるんだが、、、
A: 駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。

596 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 19:57:38 ID: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%
}
どこか改善できないでしょうか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef