AutoHotkey Thread 2at SOFTWARE
AutoHotkey Thread 2 - 暇つぶし2ch250:233
05/12/04 20:47:32 c5I9hufm0
>>249
>TListViewはListView用のLVM_~が使えた気がする

そうです、使えるようです。
実際LVM_GETITEMCOUNTでアイテム数は取得できますし。
>>246のリンク先にもありますが、SendMessageの0x1005はLVM_GETITEMのことです

>単に別プロセスのメモリー読もうとしてるからエラー出てるのでは?

これについては自分にはよくわからないです

251:名無しさん@お腹いっぱい。
05/12/04 21:06:52 OzfEcy140
>>250
VirtualAllocEx MapViewOfFile
を駆使すれば取得できるが面倒

252:名無しさん@お腹いっぱい。
05/12/04 21:09:06 LHEUZAAE0
LVM_GETITEMCOUNTはSendMessageの戻り値がそのままアイテム数だから問題ないけど
LVM_GETITEMはLVITEMのポインタをLPARAMで渡してそこに情報を書き込んでもらう奴だから
LVITEM*が指すメモリーを共有メモリにするか、SendMessageする側でフックをかけてプロセスに割り込まないといけない
共有メモリー使う方法は URLリンク(techtips.belution.com) あたりを参考にすれば出来るかな

253:233
05/12/04 21:10:52 c5I9hufm0
>>251-252
ありがとうございます
とりあえず提示されたものを頑張って調べてみます

254:233
05/12/05 12:27:58 pnvrA0j10
色々やってみたんですが、行き詰っています

URLリンク(techtips.belution.com)
これってメモリアドレスから変数を参照できないと無理なのでは?
まだ調べ始めて1日なので何か勘違いしてるだけのような気もしますが

255:名無しさん@お腹いっぱい。
05/12/05 12:48:04 yS+6IGXX0
gui,add,edit,vtitle R1 W300
gui,show
return

こんな感じでエディットボックスを作ってるんですが、日本語入力すると確定するまで表示されません。
普通に変換中に表示されるようには出来ないのでしょうか?何かオプションがあるのかな?

256:名無しさん@お腹いっぱい。
05/12/05 12:55:38 stKSCaAE0
>>255
うちで使ってる簡単なもの。これで試して駄目だったらなんかIMEとかに問題ありそうな。

#NoTrayIcon
#SingleInstance
Gui, Add, Edit, vSrc X Y W210
Gui, Add, Button, Default gSrc x+6 ys-2, &Search
Gui, Show, , Amazon検索
return
Src:
Gui, Submit
Run, URLリンク(www.amazon.co.jp)
ExitApp
GuiEscape:
GuiClose:
ExitApp


257:名無しさん@お腹いっぱい。
05/12/05 13:30:59 fH9XPvqW0
>>255
うちでは普通にでるけどなぁ・・・
win2ksp4 Atok16 MSIME2k どっちもOK

258:名無しさん@お腹いっぱい。
05/12/05 13:33:22 fH9XPvqW0
いちおう追記、AHK v1.0.40.05

259:255
05/12/05 15:14:33 yS+6IGXX0
>>256
>>257
ありがとうございます。早速試しましたが、やはりうまく表示されません。
例えば  わたしは と打つと w しか表示されないです。
Returnを押すと、わたしは と表示されます
Version 1.0.40.10をいれてみましたが、症状はかわらず。
どーもうちのIMEの不具合か、設定の問題かもしれません。
ちなみにAHK以外の日本語入力は不具合ありません。

260:名無しさん@お腹いっぱい。
05/12/05 15:38:36 N0kdWIqG0
>>259
OSの種類とIMEのバージョンや設定(ナチュラルインプットとか詳細サービスとか)書いたら?
解決したかったら人任せじゃだめだよ

261:255
05/12/05 16:21:24 ONVNYKfr0
情報が足らず申し訳ありませんでした。

Windows Xp pro sp1
AHK Version 1.0.40.10
Microsoft IME Standard 2002 ver. 8.1
詳細なテキスト サービスをオフにするにチェック
IME Watcherを使用
英字を常に半角で変換以外は設定をいじってません。

英語圏のソフトなのでこういう仕様なのかと思っていました。
我が家のPCの問題のようですので自力でがんばります。
皆様のお手を煩わせてほんとに申し訳なかったです。すみませんでした。

262:233
05/12/06 00:06:41 zKABzlSJ0
何度もすみません
やっぱり自分には無理のようです・・・

とういうか、>>252のURLの内容とほぼ同じものが
URLリンク(www.yoshibaworks.com)
に載っているんですが、同じサイトの
URLリンク(www.yoshibaworks.com)
をダウンロードして使ってみたところTListViewは取得できませんでした
下のURLのアプリは上のソースコードとは仕組みが違うのかもしれませんが


自分にとってTListViewが取得できることによってAHKはかなり便利になると思います
ずうずうしいようですが、TListViewを取得できるものが誰かの手によって書かれるのを期待します
もちろん自分でもこれからもチャレンジしていきたいと思います


263:名無しさん@お腹いっぱい。
05/12/06 00:11:30 BfjYx7dY0
TlistViewってそもそも何?


264:260
05/12/06 00:20:18 061B1eK40
>>261
俺も>>256を試したら同じ現象が起きた
XP HOME SP2
IME2002でIME Watcherは使ってない

今さらで悪いけど、むかし同じ現象が出て
InputBoxを使って回避した気がする。忘れてた…
その時は、会社のマシンだったから割と起こりやすい現象みたい

265:名無しさん@お腹いっぱい。
05/12/06 00:28:05 +pinJF560
>>262
ぱっとソースを見た感じクラスがListView32じゃないと動作しないように書いてある
これ→if ( strcmp(szClassName, WC_LISTVIEW) == 0 ) {
確かTListViewはクラス名が違ったと思う


266:233
05/12/06 00:30:50 zKABzlSJ0
>>265
ということは>>262のソースを再現すればAHKでも実現できるわけですね
少し希望が湧いてきました

267:255
05/12/06 20:02:45 BjDsaEX90
exeファイルにして、友達のPCで試してもらいました。
買ったままいじってないWinxp home sp2
やはり同じように入力がおかしかったようです。
これは、エディットボックス自体の不具合かな。あきらめてほかの方法をとることにします。

268:名無しさん@お腹いっぱい。
05/12/06 22:19:27 cuFKTqtn0
InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
; To preserve any existing contents in pDest, only pSize number of bytes starting at pOffset
; are altered in it. The caller must ensure that pDest has sufficient capacity.
{
  mask := 0xFF ; This serves to isolate each byte, one by one.
  Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data.
  {
    DllCall("RtlFillMemory", UInt, &pDest + pOffset + A_Index - 1, UInt, 1 ; Write one byte.
      , UChar, (pInteger & mask) >> 8 * (A_Index - 1)) ; This line is auto-merged with above at load-time.
    mask := mask << 8 ; Set it up for isolation of the next byte.
  }
}

ExtractInteger(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
{
  SourceAddress := &pSource + pOffset ; Get address and apply the caller's offset.
  result := 0 ; Init prior to accumulation in the loop.
  Loop %pSize% ; For each byte in the integer:
  {
    result := result | (*SourceAddress << 8 * (A_Index - 1)) ; Build the integer from its bytes.
    SourceAddress += 1 ; Move on to the next byte.
  }
  if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
    return result ; Signed vs. unsigned doesn't matter in these cases.
  ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
  return -(0xFFFFFFFF - result + 1)
}

269:名無しさん@お腹いっぱい。
05/12/06 22:21:14 cuFKTqtn0

GetListViewText(hListView, iItem, iSubItem, ByRef lpString, nMaxCount)
{
  ;const
  NULL = 0
  PROCESS_ALL_ACCESS = 0x001F0FFF
  INVALID_HANDLE_VALUE = 0xFFFFFFFF
  PAGE_READWRITE = 4
  FILE_MAP_WRITE = 2
  MEM_COMMIT = 0x1000
  MEM_RELEASE = 0x8000
  LV_ITEM_mask = 0
  LV_ITEM_iItem = 4
  LV_ITEM_iSubItem = 8
  LV_ITEM_state = 12
  LV_ITEM_stateMask = 16
  LV_ITEM_pszText = 20
  LV_ITEM_cchTextMax = 24
  LVIF_TEXT = 1
  LVM_GETITEM = 0x1005
  SIZEOF_LV_ITEM = 0x28
  SIZEOF_TEXT_BUF = 0x104
  SIZEOF_BUF = 0x120
  SIZEOF_INT = 4
  SIZEOF_POINTER = 4

  ;var
  result := 0
  hProcess := NULL
  dwProcessId := 0

270:名無しさん@お腹いっぱい。
05/12/06 22:21:36 cuFKTqtn0
  if lpString <> NULL && nMaxCount > 0
  {
    DllCall("lstrcpy", Str,lpString, Str,"")
    DllCall("GetWindowThreadProcessId", UInt,hListView, UIntP,dwProcessId)
    hProcess := DllCall("OpenProcess", UInt,PROCESS_ALL_ACCESS, Int,false, UInt,dwProcessId)
    if hProcess <> NULL
    {
      ;var
      lpProcessBuf := NULL
      hMap := NULL
      hKernel := DllCall("GetModuleHandle", Str,"kernel32.dll", UInt)
      pVirtualAllocEx := DllCall("GetProcAddress", UInt,hKernel, Str,"VirtualAllocEx", UInt)
  
      if pVirtualAllocEx == NULL
      {
        hMap := DllCall("CreateFileMapping", UInt,INVALID_HANDLE_VALUE, Int,NULL, UInt,PAGE_READWRITE, UInt,0, UInt,SIZEOF_BUF, UInt)
        if hMap <> NULL
          lpProcessBuf := DllCall("MapViewOfFile", UInt,hMap, UInt,FILE_MAP_WRITE, UInt,0, UInt,0, UInt,0, UInt)
      }
      else
      {
        lpProcessBuf := DllCall("VirtualAllocEx", UInt,hProcess, UInt,NULL, UInt,SIZEOF_BUF, UInt,MEM_COMMIT, UInt,PAGE_READWRITE)
      }


271:名無しさん@お腹いっぱい。
05/12/06 22:22:07 cuFKTqtn0
      if lpProcessBuf <> NULL
      {
        ;var
        VarSetCapacity(buf, SIZEOF_BUF, 0)

        InsertInteger(LVIF_TEXT, buf, LV_ITEM_mask, SIZEOF_INT)
        InsertInteger(iItem, buf, LV_ITEM_iItem, SIZEOF_INT)
        InsertInteger(iSubItem, buf, LV_ITEM_iSubItem, SIZEOF_INT)
        InsertInteger(lpProcessBuf + SIZEOF_LV_ITEM, buf, LV_ITEM_pszText, SIZEOF_POINTER)
        InsertInteger(SIZEOF_TEXT_BUF, buf, LV_ITEM_cchTextMax, SIZEOF_INT)
        
        if DllCall("WriteProcessMemory", UInt,hProcess, UInt,lpProcessBuf, UInt,&buf, UInt,SIZEOF_BUF, UInt,NULL) <> 0
          if DllCall("SendMessage", UInt,hListView, UInt,LVM_GETITEM, Int,0, Int,lpProcessBuf) <> 0
            if DllCall("ReadProcessMemory", UInt,hProcess, UInt,lpProcessBuf, UInt,&buf, UInt,SIZEOF_BUF, UInt,NULL) <> 0
            {
              DllCall("lstrcpyn", Str,lpString, UInt,&buf + SIZEOF_LV_ITEM, Int,nMaxCount)
              result := DllCall("lstrlen", Str,lpString)
            }
      }

272:名無しさん@お腹いっぱい。
05/12/06 22:22:41 cuFKTqtn0
      if lpProcessBuf <> NULL
        if pVirtualAllocEx <> NULL
          DllCall("VirtualFreeEx", UInt,lpProcessBuf, UInt,0, UInt,MEM_RELEASE)
        else
          DllCall("UnmapViewOfFile", UInt,lpProcessBuf)
      if hMap <> NULL
        DllCall("CloseHandle", UInt,hMap)
  
      DllCall("CloseHandle", UInt,hProcess)
    }
  }
  return result
}


273:名無しさん@お腹いっぱい。
05/12/06 22:23:18 cuFKTqtn0

;const
MAX_TEXT = 260

;var
iItem := 0
iSubItem := 0
x := 0
y := 0

VarSetCapacity(szText, MAX_TEXT, 0)
VarSetCapacity(szClass, MAX_TEXT, 0)
VarSetCapacity(point, 8, 0)
DllCall("GetCursorPos", Str,point)
x := ExtractInteger(point, 0, true, 4)
y := ExtractInteger(point, 4, true, 4)
hListView := DllCall("WindowFromPoint", Int,x, Int,y)
DllCall("GetClassName", UInt,hListView, Str,szClass, Int,MAX_TEXT)
if DllCall("lstrcmpi", Str,szClass, Str,"SysListView32") == 0 || DllCall("lstrcmpi", Str,szClass, Str,"TListView") == 0
{
  GetListViewText(hListView, iItem, iSubItem, szText, MAX_TEXT)
  Msgbox, %szText%
}
return

274:233
05/12/06 22:52:52 oOmblgWA0
すごい!感動しました!
感謝してもしきれないです
本当にありがとうございます

275:名無しさん@お腹いっぱい。
05/12/07 00:24:52 +IISIZwk0
引数が足りなかった
DllCall("VirtualFreeEx", UInt,hProcess, UInt,lpProcessBuf, UInt,0, UInt,MEM_RELEASE)

276:名無しさん@お腹いっぱい。
05/12/07 00:33:06 WQOB4lVi0
>>233
具体的にどういう使い方をするのかちょっと興味あるんだけど、教えてくんない?

277:233
05/12/07 16:47:00 Fl/Gr8/X0
>>275
普通に動いてたので気づきませんでした
どちらにしても感謝です

>>276
ここまでしてもらってなんですが、ご勘弁を


278:名無しさん@お腹いっぱい。
05/12/07 16:57:01 x7hOLdd40
>>277
エロDVDのタイトルの整理か何かですか?

279:名無しさん@お腹いっぱい。
05/12/07 23:01:34 SL+OhssX0
匿名掲示板で詳しく言えないって事は犯罪絡みか

280:名無しさん@お腹いっぱい。
05/12/07 23:29:33 EMbBN43/0
それか業務がらみとか

281:名無しさん@お腹いっぱい。
05/12/08 01:24:26 kFp6FhOt0
変数一覧のところの一番上に

0[1 of 1]: 0

ってのが必ずあるんだけどこれって何?

282:名無しさん@お腹いっぱい。
05/12/08 19:29:26 tAZLc0Al0
コマンドライン引数の奴

283:281
05/12/08 19:30:54 kFp6FhOt0
>>282
あ、なるほど

284:名無しさん@お腹いっぱい。
05/12/10 23:31:57 8fYJs8aX0
質問なのですが、このソフトでIME起動時に全角文字を入力として挿入することは
比較的楽に出来ますでしょうか?

なにがしたいかと言いますと、自分はIMEは「かな入力」の人間でして、
チャット等の、通常会話に近い文を書いてる時は、!や?が、かな文字と
同じくらいの平易さで出現するのですが、かな入力ですと、入力するのが
ちょっと面倒なのです(かな/英数を切り替えてからShift+1で再びかな/英数など)
そこで、IME(ATOK2005)が起動している時は、かな入力状態でも
[Shift]+[1]で“!”を、[Shift]+[/]で“?”を入力出来るようにしたいのですが、
そう言ったことは可能でしょうか?

自分の程度としましては、DOS3からなのでbatは書けますがvbsは読んで修正するのが精一杯、
サイトの引っ越しでUWSCでIEを半自動実行で転記させる50行×8本くらいのサブルーチンを
書いた程度で、最近は正規表現がなんとか使えてきて楽しいというようなレベルです。

外国産みたいなので、IMEの起動を検知できるのかと、起動したIMEに文字を直接送ることが
出来るのかがネックかなと思っているのですが…

よろしくお願いします。

285:名無しさん@お腹いっぱい。
05/12/11 00:22:31 XJ0qF38r0
> そう言ったことは可能でしょうか?
可能

それと、おまえのレベルなんて知ったこっちゃない
このソフトが使えないレベルなら他を当たれ
使えるなら勝手にしろ
といっても、流行らせるページ見ればこの程度バカでも出来るがな

ソフトに限ったことじゃないが、便利なものを使いたければ
それに応じた実力(知識や技術など)を身につけろってこった

286:名無しさん@お腹いっぱい。
05/12/11 00:39:49 apES3Z+g0
まぁ要望を長々と書いたところで、マジメに読んでもらえる訳が無い。

がんばればアンタでもできるんじゃねーの?としか言いようが無い。

287:名無しさん@お腹いっぱい。
05/12/11 00:59:00 78+mCWVm0
つーか俺なら変換キー連打で解決するね

288:名無しさん@お腹いっぱい。
05/12/11 01:23:09 LXjhHQ7b0
辞書登録で1→! 0→?(テンキーを使っているなら)とか
ぬ→! め→? とでも登録した方が分かりやすい上に
てっとり早いんじゃないか?

289:名無しさん@お腹いっぱい。
05/12/11 01:27:32 78+mCWVm0
>>288
>>287

290:284
05/12/11 13:39:45 OA29yvnX0
お返事ありがとうございます。
ソフトによっては、ユーザー側に有る程度の素養が要求されると思いますので、
現実的に見て、自分のレベルで作業するのに問題が無いか、
取り組む前に確認させて貰いたかったのですが、スレの空気を乱す発言になった
ようで、すみませんでした。

お返事を見る限り、無理な要求という感触では無いようですので、
参考にさせていただいて、検討いたします。

291:名無しさん@お腹いっぱい。
05/12/11 13:46:13 n6eRmNGz0
とりあえずお前が人のアドバイスを試す気がないカスなのは分かった

292:名無しさん@お腹いっぱい。
05/12/11 13:48:53 2lWo/Yh80
プッ

293:名無しさん@お腹いっぱい。
05/12/11 20:13:50 /OTbplQs0
しばらく過疎ってる間にえらく空気悪くなってるな
>>290
IME制御に関しては過去何度か話題に上がってるので調べてみれ
なまず氏が自分とこのブログで最近とりあげてたし

294:名無しさん@お腹いっぱい。
05/12/13 00:21:18 sRReWFce0
URLリンク(www.tamanegi.org)
ここのmigemo-isearchってAHKでできます?
dllのことはよくわからないんですが、これに入ってるのをDllCallすれば可能?

295:名無しさん@お腹いっぱい。
05/12/13 03:10:20 UEU0KJ8o0
もうある

296:名無しさん@お腹いっぱい。
05/12/13 13:57:25 sRReWFce0
>>295
本当ですか?
一応「migemo ahk」「migemo autohotkey」などで検索しても見つかりませんでした

297:名無しさん@お腹いっぱい。
05/12/13 14:41:54 DtKvDaaE0
流行らせるページにある奴じゃないのかな。

298:名無しさん@お腹いっぱい。
05/12/13 14:47:52 sRReWFce0
>>297
ありました
これ昔からありましたっけ?

299:294
05/12/13 17:20:20 sRReWFce0
これをブラウザで使うやり方がさっぱりわからない・・・・

そもそもサンプルが上手く動かないです
例えば「a」と打つと「シリアス」だけがマッチ(他にもaはたくさんあるのに)
どんな文字でも2文字目を打つと何も表示されず
意味がよくわからないです

300:294
05/12/13 17:39:57 sRReWFce0
自分でlist=を作ってやってみましたが
アルファベットだけがマッチ
漢字・ひらがな・カタカナ全滅

私が何かをすごく勘違いしてる気がしますが・・・・

301:294
05/12/13 17:52:44 sRReWFce0
ただ単に辞書パスが違っているというアホな間違いでした
すみません

でもブラウザで使うやり方は未だわからず

302:名無しさん@お腹いっぱい。
05/12/13 18:03:09 DtKvDaaE0
いつから日記スレになったんだ

303:294
05/12/13 18:05:03 sRReWFce0
>>302
本当にスレ汚しすみません

304:名無しさん@お腹いっぱい。
05/12/13 18:05:04 JxXQO2OP0
さっさと消えろよ、うざいなぁ。

305:名無しさん@お腹いっぱい。
05/12/13 18:23:00 McRsgk3+0
なんか最近スレの空気悪いなぁ。

っていうかmigemoの存在を初めて知った。
ちょっと感動。

流行らせるページのスクリプト見てみたけど
>>294と同じ機能をAHKからブラウザで使うのは無理じゃね?

306:名無しさん@お腹いっぱい。
05/12/13 20:54:54 wLsVmh5S0
俺も知識不足でサンプルで何をやっているのか全然わからないので
流用できなかった。
任意のファイラ上でmigemoでファイルを選択したかったんだけどね。

マッチングを行わせたい文字列をリストにしてスクリプトに
読ませるんだというのはなんとなくわかるけど
マッチした内容を任意のソフトに対してどうやって反映させたら
いいのかさっぱり。
誰か使っている人いたら具体的なスクリプトを教えてくれないかな。

307:名無しさん@お腹いっぱい。
05/12/13 22:44:18 tDGCBqUo0
>>304
お前が消えろよ

308:名無しさん@お腹いっぱい。
05/12/13 22:54:36 hY2eSXDW0
ファイラーはMigemizeExplorer
ブラウザは窓使いの憂鬱
2chブラウザはJaneView
エディタはサクラエディタ

ってな具合にmigemoを使ってる。
ただ、繭で使ってるのはmigemoのみだから繭をなくしたいんだよね。
別に不具合はないけど。
ブラウザ乗り換えも何度も検討した結果、今使ってるものになってるし。

309:名無しさん@お腹いっぱい。
05/12/14 12:55:41 RrhosKDn0
今現在、Win用・繭不要でmigemo対応のブラウザは

fub.net
ぶら。  ※拡張機能で。

Bagel
Firefox  ※XUL/Migemo
Sylera2

オレはSylera2だけど他にもあるような…

310:名無しさん@お腹いっぱい。
05/12/14 14:43:44 NCzEYHK/0
Janeのトレース画面を一発で出し入れできるスクリプトって無理かな


311:名無しさん@お腹いっぱい。
05/12/15 09:04:11 Oeo3ug/h0
質問ですけど、スクリプトでMSNメッセンジャーを取り込み中に変えたりオンラインに戻したりするにはどうしたらいいですか?

312:名無しさん@お腹いっぱい。
05/12/15 09:16:32 vmIlAlU20
>>311
AutoHotkey以外での実現方法を知っているなら、そのとおりに実装すればいいのでは。
手始めに "MSN Messenger" Messenger.UIAutomation.1 で検索するとかして。(英語も読もう)

313:311
05/12/15 09:21:36 Oeo3ug/h0
>>312
レスどうもです!
> AutoHotkey以外での実現方法
はタスクトレイのアイコンを右クリックしてやる方法しか知らないです・・・
ちょっとググってみます!
英語は・・・読める限り・・・

314:名無しさん@お腹いっぱい。
05/12/15 12:34:59 quYc50MH0
>>310
出し入れというかマウス系のコマンド使って瞬間的に
ドラッグして消しているように見せるだけの奴なら作ってみた。
結構良い感じでうまく動いたよ。

そういう意味では出来ると答えておきます。

他に方法があるかもしれないけど漏れにはわかりません。

315:名無しさん@お腹いっぱい。
05/12/15 15:12:30 Ro4rZY7t0
>>314
やっぱそれしかないかー
と思ったが、Hideenテキストを取得するスクリプト書いて
MSGBOX出せば、トレース画面出さなくても
デバッグログがみれるかもと思った。

316:名無しさん@お腹いっぱい。
05/12/15 15:21:14 quYc50MH0
あ、トレース画面を別ウィンドウで浮かせたいってことが言いたかったのか。
勘違いしてスマソ。
うーん。Janeのソースいじってしまった方が速いんでないかい?

まぁ、でもText拾ってGuiで別Window作成して表示させれば、できるだろな。

317:名無しさん@お腹いっぱい。
05/12/15 15:28:31 Ro4rZY7t0
>>316
あ、いや、その解釈であってるよ。
最初は外部コマンドからトレース画面をある程度の幅で
ウィンドウ内に出せればいいなと思ってたんだけど。
でも、AU3_Spyで見たらトレース画面のテキストが取得できてたんで
別に本体で見なくてもいいかなと思って。

318:名無しさん@お腹いっぱい。
05/12/15 18:13:10 RHa3zC2W0
Jane作者に要望だせば?

319:名無しさん@お腹いっぱい。
05/12/15 22:56:34 3cBKpG8E0
>>294にあるdll使って

DllCall("dllのパス\migemo-isearch.dll\ie_isearch_fmRi",Int,0)
としてみたが何も起こらず。
返り値はなし、ErrorLevelは-4(DLLは見つかったが、Functionで指定した関数が無かった)

どこが間違っているでしょうか?
そもそも無理?


320:名無しさん@お腹いっぱい。
05/12/19 16:48:21 T6Ojlipz0
CPU使用率を取得するにはどうすればいいでしょうか?

URLリンク(www.vector.co.jp)
これを使って呼び出そうとしましたが、上手くいきません

321:名無しさん@お腹いっぱい。
05/12/19 17:50:39 m4JgEdVJ0
>>320
残念ながら力になれないが (DllCallを今初めて使った)、
どのような記述をして、どのように動かなかったのかの説明は書いておいた方が良いと思うよ。
ちなみに自分が試したのはこんな感じ。

;コード
#O::
Ret := DllCall("getcpust\GetCpuStatus", IntP, rate)
MsgBox, 返値:%Ret%`n使用率:%rate%`nエラーコード:%ErrorLevel%
return

;メッセージボックス
返値:1
使用率:0
エラーコード:A4

引数無しにするとエラーは出なくなるけど、それだと意味ないしなぁ。
以下DLLのReadmeから引用。他の人回答ぷりーず。
>int GetCpuStatus( int *rate )
>をEXPORTします。
>第1引数に引き渡したint型のメモリにCPU使用率が格納されます。
>返値は失敗するとFALSE(0)を、成功した場合はそれ以外を返します。





322:320
05/12/19 17:53:49 T6Ojlipz0
>>321
自分もほぼ同じ記述です

ただ、引数の最後にCdeclを追加するとErrorLevelは0になります(返値1・使用率0は変わらず)

323:名無しさん@お腹いっぱい。
05/12/20 14:08:58 VYjzBC0S0
>>322
調べてみたらその関数の呼び出し規約はcdeclだった(関数を公開するなら明示すべきだが)。
mp3でも再生しながら再計測してみては?

324:320
05/12/20 14:14:45 yg2tqewb0
>>323
ん?つまり記述はあっているけど私のCPU使用率は0だから0を返してるってことですか?
負荷を上げても0のままです

325:名無しさん@お腹いっぱい。
05/12/20 15:28:39 6fVVhLVx0
もしかして、とおもってやってみたらドンピシャ。

#Persistent
OnExit, ExitSub
hModule := DllCall("LoadLibrary", str, "getcpust.dll")
if hModule=0
{
ExitApp
}
SetTimer, GetCpust, 500
return

GetCpust:
Ret:=DllCall("getcpust\GetCpuStatus", "Int*", cpust, "cdeclInt")
ToolTip, 返値 %Ret%`ncpust %cpust%`nErrorLevel %ErrorLevel%
return

ExitSub:
DllCall("FreeLibrary", UInt, hModule)
ExitApp

326:320
05/12/20 15:35:13 yg2tqewb0
>>325
なるほど、そうやるんですね
勉強になりました

ありがとうございます

327:名無しさん@お腹いっぱい。
05/12/20 15:41:31 6fVVhLVx0
これみてピンとキタ━(゚∀゚)━ヨ。
URLリンク(lukewarm.s101.xrea.com)

>DLL確保/開放の手動化
>DLLの処理によっては、処理の途中でDLLが開放してしまうと正常に動作しない場合がある。
>その場合、上記の例のように手動でLoadLibrary/FreeLibraryを行うことで、本来の動作になることがある。


できるだけ、この方法使った方が正常に動作するのかもしれませんね。

328:320
05/12/20 15:44:01 yg2tqewb0
>>327
そこには目を通していたはずなのに実行してみなかった自分が恥ずかしいです

329:名無しさん@お腹いっぱい。
05/12/20 15:45:24 6fVVhLVx0
>>327
URLリンク(lukewarm.s101.xrea.com)
だった・・

>>328案外見落としてしまうですね^^

330:名無しさん@お腹いっぱい。
05/12/20 16:14:40 e8aKpTDx0
平日の真昼間にいきなり活性化してんのな
学生ってもう冬休みに入ってるのかなw

331:名無しさん@お腹いっぱい。
05/12/20 16:19:32 e8aKpTDx0
↑末尾のwは Alt+w(書き込み)の押し間違いだorz

332:名無しさん@お腹いっぱい。
05/12/20 16:59:12 f5Fr+yX00
Ctrl+Alt+Delを無効にしようと思うんだけど

^!Del::return

としても変化なし
何か特別なことをしなければならない?

333:332
05/12/20 17:22:32 f5Fr+yX00
もっとよく調べてから質問すればよかった・・・

URLリンク(nienie.com)
コンパイルする環境にないのでコンパイル済を探しているところ
・・・ってこれはスレ違いか

334:名無しさん@お腹いっぱい。
05/12/21 22:00:44 C94x2s+u0
>>333
俺もそれほしくてコンパイル済みを探したけど見つからんかった。
どなたかお願いします・・

335:名無しさん@お腹いっぱい。
05/12/22 02:31:48 MS28PmO/0
>>333-334
コンパイルだけなら出来ないこともないが、
さすがにそんなシステムの根幹に関わるファイルは試したくないし、
そのまま上げて、うまく動かなくてシステム復旧できなくなっても責任取れないし。
第一、こんな危険度の高いファイルを匿名掲示板の誰とも知れぬヤツに
頼むのはどうかしてるとしか思えない。

336:名無しさん@お腹いっぱい。
05/12/22 16:11:43 7k5DRGNJ0
335の言うとおり。どれほど危険かわかっていってんのかね。

337:名無しさん@お腹いっぱい。
05/12/22 17:01:29 V901fh0D0
何度もいう必要は無いよ
一度言えば分かる
もしやる奴がいれば上げればいいし
自己責任で使えばいい

338:名無しさん@お腹いっぱい。
05/12/22 18:39:00 8FMcnaKn0
とりあえず自力でコンパイルできる位のスキルがある奴でないと危ないってこった

339:名無しさん@お腹いっぱい。
05/12/22 18:44:59 KsC0+Fth0
何度もいう必要は無いよ
一度言えば分かる
もしやる奴がいれば上げればいいし
自己責任で使えばいい


340:名無しさん@お腹いっぱい。
05/12/22 22:47:41 1UNMjvMz0
乱数が必要なときどうしてます?

341:名無しさん@お腹いっぱい。
05/12/22 23:14:28 mI5CV1Yi0
Random使ってますが

342:名無しさん@お腹いっぱい。
05/12/22 23:14:55 MS28PmO/0
Random, OutputVar [, Min, Max]

343:340
05/12/22 23:16:16 1UNMjvMz0
関数の方で探してましたorz

344:名無しさん@お腹いっぱい。
05/12/22 23:26:11 1UNMjvMz0
もしかして16進数←→10進数もあったりする?

345:名無しさん@お腹いっぱい。
05/12/23 00:08:10 6+7NW5wO0
>>344
ある。探し方が下手なだけだと思う。

346:名無しさん@お腹いっぱい。
05/12/23 00:24:43 HDLrFyls0
>>345
ありました
SetFormatですね

今度一からリファレンスを見直そうかな・・・・

347:名無しさん@お腹いっぱい。
05/12/23 17:22:00 6+7NW5wO0
一部のソフトのバグが原因(だと思われる)でフォーカスの横取りがうまくされなくなる問題の解決のために、
フォーカスを奪いたいソフトを実行させる前に以下のコマンドを実行するようにしてみた。

GetFocus:
RegRead, fore, REG_DWORD, HKCU, Control Panel\Desktop, ForegroundLockTimeout
IfNotEqual, fore, 0
{
RegWrite, REG_DWORD, HKCU, Control Panel\Desktop, ForegroundLockTimeout, 0
Sleep, 500;反映待ち
}
return

しかし、実際にレジストリの方は書きかわっているものの、きちんとフォーカスを奪ってくれず、
TweakUIで該当の項目を見てもチェックが付いたまま…もちろんTweakUIでチェックを外せば奪うようになる。
他に何をすればAHKでも反映されるようになるんかな。


348:名無しさん@お腹いっぱい。
05/12/23 19:43:26 JrNibnEe0
あーなんか昔クリップボード拡張ソフトのスレでそれっぽいの見たような記憶が
今ちと忙しくて過去ログ探してる暇がないが
Charu3起動するとフォーカス関係がおかしくなる奴

349:347
05/12/23 21:18:22 6+7NW5wO0
>>348
そのスレ自体は知っているんだけど、やっぱり原因となってるソフトを特定して、
作者に直してもらうほか無いのかなぁ。

350:名無しさん@お腹いっぱい。
05/12/23 22:08:11 4kg8U7Th0
>>347
その手の設定はレジストリ変えた後に「再設定したよ」ってOSに知らせないといけないのかも
確かそんなAPIがあったはず

351:名無しさん@お腹いっぱい。
05/12/24 00:50:55 qmuEaf2G0
最強クリップボード拡張ソフトはこれだ!Part5
スレリンク(win板:371-383番)
CharuシリーズサポートBBSの下のほう
XPでフォアグラウンドアクティブできなくなるのですが…
URLリンク(8537.teacup.com)

自分このときCharuの作者さんに報告したものだけど
問題部のソース晒して貰った上でバグ部分を特定してるので
>347氏のも同じ現象ならソフトの作者さんに報告すれば直して貰える確率は高いと思う
常駐物もいったん全部外して、常用ソフト一個ずつ起動終了ごとにTweakUIで状態確認、で
原因のソフトは特定できると思うよ。ちと手間だけど

352:名無しさん@お腹いっぱい。
05/12/29 13:16:24 kRbce90V0
age

353:347
06/01/02 13:16:01 ECSj1xL10
状況報告
Tweak UIの挙動をSpy++で確認。レジストリ変更後、↓を確認。
WM_SETTINGCHANGE wFlag:2001 pszMetrics:0006F4B4
ということで、スクリプトに↓を追加。
SendMessage, 0x1A, 0x0002001, 0x0006F4B4,, ahk_id 0xFFFF

これで試したところ、以下のような良く分からん状態に。
  Tweak UIでチェックをつけてOKを押す 該当レジストリが200000になる
↓AHK実行 レジストリが0になる
↓フォーカスをきちんと奪うようになる
↓Tweak UI起動して確認するとチェックが付いたまま レジストリの方は0になっている
↓そのままOKを押す
↓AHK実行 レジストリは0のまま
↓フォーカスを奪えない Tweak UIの方もチェックが付いたまま

↓のようにいろいろ変えてみても効果無し。
SendMessage, 0x1A, 2001, 0x0006F4B4,, ahk_id 0xFFFF
SendMessage, 0x1A, 0x0002001, "Control Panel\Desktop",, ahk_id 0xFFFF
SendMessage, 0x1A, 0x0002001, "HKEY_CURRENT_USER\Control Panel\Desktop",, ahk_id 0xFFFF
SendMessage, 0x1A, 0, 0x0006F4B4,, ahk_id 0xFFFF
SendMessage, 0x1A, 0, 0,, ahk_id 0xFFFF

354:347
06/01/02 13:23:01 ECSj1xL10
続き

参考にしたのは↓のサイト
URLリンク(www.sxlist.com)

何か根本的に間違っているのかそれとも足りないのか…
ちなみに原因となってるソフトを探してみるものの、問題が起こるときは何度でも起きるし、
起きないときは全然で、再現性が無くて困り中。
何かSyleraが怪しい気もするけど確証が取れず。複数ソフトが原因だったらお手上げっす。

長文スマンね。

355:名無しさん@お腹いっぱい。
06/01/03 07:25:06 jyT5EMJg0
JoeのようなAltTab代替アプリを実現しようと思ったんですが、
アイコンの取得の仕方がわかりません。

インスタンスハンドルを取得できればWinAPIを使ってできそうなんですがうまく取得できず。

356:名無しさん@お腹いっぱい。
06/01/03 12:14:30 Tw0iMMgh0
HDD漁ったら昔作ったアイコン存在チェックソース出てきた。時間ないので未検証でコピペするお

;WNDCLASSEX 構造体にセットされたアイコン
GCL_HICON := DllCall("GetClassLong", Uint,hWnd, Int,-14) ;GCL_HICON
GCL_HICONSM := DllCall("GetClassLong", Uint,hWnd, Int,-34) ;GCL_HICONSM

;WM_SETICON メッセージによってセットされたアイコンを取得
SendMessage,0x007F,0,0,,ahk_id %hWnd% ;ICON_SMALL
ICON_SMALL := ErrorLevel
SendMessage,0x007F,1,0,,ahk_id %hWnd% ;ICON_BIG
ICON_BIG := ErrorLevel
SendMessage,0x007F,2,0,,ahk_id %hWnd% ;ICON_SMALL2(XP)
ICON_SMALL2 := ErrorLevel
OutputDebug, GCL_HICON=%GCL_HICON% GCL_HICONSM=%GCL_HICONSM% ICON_BIG=%ICON_BIG% ICON_SMALL=%ICON_SMALL% ICON_SMALL2=%ICON_SMALL2%

357:355
06/01/03 17:40:06 jyT5EMJg0
>>356
ありがとうございます。
これでアイコンハンドルは取得できました。

ListViewのGuiのIL_Add()ではアイコンのファイル名が必要なんですが
ハンドルからファイル名は取得できるのでしょうか?

358:名無しさん@お腹いっぱい。
06/01/03 21:17:52 Tw0iMMgh0
取得したアイコンハンドラを元にGUIへ反映する方法はわからんです。
(自分はウィンドウのタイトルバー左上にアイコンがあるのかどうか調べるためだけに
アイコンハンドル取得してみてるだけなので)
APIでどうにかできそうとのことだったので、むしろフィードバックを期待してたんですが

単純にexeのアイコンが表示できればいいのなら、管理人さんの
プロセスIDを指定して実行ファイルパスを得る関数で .exeフルパス取得して
セットしてやればいいと思われ

URLリンク(cgi19.plala.or.jp)

359:355
06/01/03 21:27:09 jyT5EMJg0
>>358
その管理人さんの関数で解決できそうです。

ありがとうござました。

360:355
06/01/03 21:45:14 jyT5EMJg0
最後のほうの
DllCall("psapi\CloseProcess","Int",hProcess)
のErrorLevelが-4になってしまうんですが大丈夫なんでしょうか?


361:名無しさん@お腹いっぱい。
06/01/04 15:29:26 SbxpZ6KF0
ホイールの挙動がなんかおかしいです

SetTimer,tip,1000
return

tip:
GetKeyState,ks,WheelDown,P
ToolTip,%ks%
return

で調べると、一度でもWheelDownをするとそのあとマウスから手を離しても
ずっとksの値はDのままになってしまいます。


362:名無しさん@お腹いっぱい。
06/01/04 15:49:26 x6p42A6B0
>>360
これはCloseHandle()の間違いらしい。
DllCall("CloseHandle", "Int", hProcess)

363:名無しさん@お腹いっぱい。
06/01/04 16:55:55 95AmdYfp0
>361
ホイールの回転はホイール押下みたいなUP/DOWNが有るイベントじゃないから
状態を取ること自体間違ってる気がする


364:361
06/01/04 17:01:50 SbxpZ6KF0
>>363
ホイールが回転されるまで待機、ってことがやりたいんですが
無理ですか?

365:名無しさん@お腹いっぱい。
06/01/04 19:47:56 95AmdYfp0
単にWheelDown::に処理書いてやって,フラグ立てるなり終了するなりすればいいんでは


366:361
06/01/04 19:50:45 SbxpZ6KF0
>>365
& WheelDown::の最中で待機したかったんですが
あきらめて他の仕様にすることにします

367:名無しさん@お腹いっぱい。
06/01/05 01:16:03 YlkDRsZz0
フォルダのパスを引数として渡し、
「フォルダの参照」ダイアログのツリーを操作して
引数のフォルダを選択させる、ということをしたいのですが、
どのようにすればいいのでしょうか?

DialogSetやDialogHandlerが使えないソフトにも
自前で対応させようとしているのですが、
「フォルダの参照」ダイアログがどうにもできず困っています。
助言をいただきたいです。

368:355
06/01/05 01:17:18 n7Jr+2qn0
>>362
亀レスすみません
エラー出なくなりました。ありがとうございます。

369:名無しさん@お腹いっぱい。
06/01/05 01:40:30 8eGMClaI0
>>367
「フォルダの参照」の場合、パスをセットする場所がないので
ルート(マイコンピュータ)からインクリメンタルサーチで1階層ごとに
フォルダ選択していくしかないのでは?
DialogHandlerは随分とうまいことやってるけど、多分100%の無理そうな気がする。

370:名無しさん@お腹いっぱい。
06/01/05 01:41:29 8eGMClaI0
×多分100%の無理そうな気がする。
○多分100%の精度での実現は無理そうな気がする。

371:名無しさん@お腹いっぱい。
06/01/05 10:54:01 mE3SDKUy0
一応フォルダの参照ダイアログの選択フォルダを指定する
方法はあるが(>>369のような不確かな方法ではない)
AutoHotKeyでは無理っぽい気がする。
とりあえずSHBrowseForFolder SHGetPathFromIDList
あたりでググってみるといい。この方法は環境に問題がなければ
精度はほぼ100%だよ。(完全に100%かもしれないが、
言い切れるほどの確認はしてないので)

372:367
06/01/05 15:29:16 YlkDRsZz0
>>369 >>371
レスありがとうございます。どうも難しいようですね。
「フォルダの参照」の場合はDialogHandlerに丸投げすることにしました。

373:名無しさん@お腹いっぱい。
06/01/07 16:48:04 g9rnGIxl0
特定のアプリにのみ有効にすることはできますか?
また、マウスジェスチャ(←→ならESCなど)を指定することはできますか?

374:名無しさん@お腹いっぱい。
06/01/07 17:08:20 E/GD5dod0
そのように書けばできますYO!

375:名無しさん@お腹いっぱい。
06/01/09 15:47:48 OvYu84cO0
>>347
AutoHotkeyユーザーではありませんが、347さんと同じような現象で困っていてこのスレにたどり着きました。
tuneappスレ(Windows2000/XP チューンナップ専用スレ Part17)にも書き込んでます。
以前はこんな現象は起こらなかったので困ってます。
常駐ソフト切ったり、バージョンを変えたり(上げたり落としたり)しても同じく原因がわからないんですよね・・・
レジストリを書き換えても(tuneappでも可)、TweakUIの「アプリケーションにフォーカスを横取りさせない」のチェックボックスに変化無し。
チェックボックスを外してもいつの間にかチェック状態に戻ってしまう・・・
Windows2000を普段使ってまして、WindowsXPだと起きていないので
Windows2000の何かが原因なんですかね。
ネットで調べたらWin32 APIてのが関係してるかもしれないようですが、お手上げ状態です。

376:名無しさん@お腹いっぱい。
06/01/09 17:38:31 r9CSfa8s0
>>347
今更だが、Regmon辺りで書き換えてるアプリ探すのが一番かと
ForegroundLockTimeoutでフィルタリングして放置しておけばそのうち引っかかると思うぞ

377:347
06/01/09 21:51:22 gCdov2U80
>>376
残念ながらそれはもう試してた。Regmonでは引っかからなかったよ。
Tweak UI等での正規の方法で変更する場合は関知してくれるけど、このバグの場合は無理らしい。
いっそ、この問題が起こる人用のスレでも立てて、全使用ソフトを書き連ねる→共通するソフトが容疑者
って方法でも取らないと無理かなぁ…ちなみにOSはXP SP2です。

とりあえず原因が除去できないならってことで、>>347で書いたものの代わりにこんな感じで無理矢理対処。
SendMessage等を用いたもっとスマートなやり方を誰か分かれば頼む。

TweakFocus:
Run, TWEAKUI.EXE
WinWait, Tweak UI
ControlSend, SysTreeView321, {Down}{Right 2}, Tweak UI
Sleep, 50
Control, UnCheck, ,Button2, Tweak UI
Sleep, 50
ControlClick, Button6, Tweak UI
return

378:名無しさん@お腹いっぱい。
06/01/09 23:37:50 r9CSfa8s0
>>377
Regmonでダメだったのか
古典的なwin.iniのCompatibility95セッションに追加する手法は?

379:347
06/01/10 00:20:10 YKl99lMm0
>>378
こんな簡単な解決方法があったとは…
根本的な解決になったわけではないけど、実用上は何の問題もなし。
激サンクス!

380:名無しさん@お腹いっぱい。
06/01/10 12:26:18 edhaETY50
今更かもしれませんが・・・前スレ749さん

hModule := DllCall("LoadLibrary", str, "DengakuDLL.dll")

p := DllCall("DengakuDLL.dll\TOHANKAKU", "str", "01234567890", "str")
msgbox, %p%
DllCall("lstrcpy", "str",str1, "str", p)
msgbox, %str1%

DllCall("FreeLibrary", UInt, hModule)

で、動きました。処理途中で解放されていたのが問題だったぽいですね。
すでに解決してたらすいません。

381:名無しさん@お腹いっぱい。
06/01/10 21:55:48 h3Yb+cm+0
DllCall("SetCaretBlinkTime",UInt,100)
とやってもすぐに反映されず、何かアクションを起こさなければ速度はそのままです。
何か足りないんでしょうか?


382:前スレ749
06/01/11 01:30:09 95IZTI+k0
>>380
あ! LoadLibraryで確保すればOKだったのか。
管理人氏がBRegExp.dll でやってたのは知ってたけど再検証はしてなかったです。
(自分でも忘れてた) 秀マクロ用のDLLが使えるようになるのは結構大きいかも。
教えてくれてアリガトン

てことは、AHKでも田楽DLLのSETVER/GETVERでグローバル変数が扱えるのかな
iniとか経由なしでオンメモリ上で秀マクロや他のアプリとデータを共有化できるのか
うはw夢がひろがりんぐwww


383:名無しさん@お腹いっぱい。
06/01/11 04:51:40 tIP7xIJe0
起動するとそのままタスクトレイに入るソフトがあるんですが、
これをScrollLockで起動・終了したいんですね。
で、こんな風に書いてみたんですが……

~ScrollLock::
Process, Exist, task.exe
if ErrorLevel = 0
Run, task.exe
else
WinClose, ahk_pid %ErrorLevel%
return

これだとそのソフトの終了ができないんです。
ここの「WinClose」が「Process, Close」にすれば「強制終了」はできるんですが、
強制終了でなくふつうの終了がしたいんです……。ソフトの挙動が変わってしまうので。

タスクトレイアイコンを右クリックでxすると終了できるので、
この「WinClose」の行を「Send, #b & AppsKey & x」とかやってみたんですが、
別のアイコンにフォーカスが当たってしまい、、、どうにもうまくいきません。教えてください。

384:名無しさん@お腹いっぱい。
06/01/11 05:02:56 XYQfQQRG0
トレイメニューの「閉じる」のコマンド番号を調べておいてWM_COMMANDで送ってやればいいような

385:名無しさん@お腹いっぱい。
06/01/11 07:58:09 95IZTI+k0
挙動の本質とは関係ないかもしれないけど、Locks系の押下情報は
OSが返してくる値がおかしいからホットキーに割り当てるのは控えたほうが良いと思われ

386:名無しさん@お腹いっぱい。
06/01/12 01:07:46 rmvCVckQ0
なまず日記すげえな。

387:383
06/01/12 03:13:12 HWiUEJ9g0
助言ありがとうございました。

Send, #b{APPSKEY}x
これでいけました。
これ「ソフトがタスクトレイの左端にある」ことを決めてかかっているのでよくないですが、
紹介いただいた「コマンド番号を調べる」方法を知らないので……(^^;
ぐぐって見て、
ResouceHackerでできるという話があったのでやってみたんですが、
それらしいエントリが見つからず……断念。

388:名無しさん@お腹いっぱい。
06/01/12 03:30:15 5XY6ilOR0
Direct Command
URLリンク(members.jcom.home.ne.jp)

終了命令はこれで調べられる可能性があるよ
SendCmdをRunさせてもいいし、
AHK内でも処理できる。

389:383
06/01/12 21:12:12 HWiUEJ9g0
ありがとうございます。
ただ、流行らせるページで紹介されている方法も含め、ソフトが特殊なのかうまくいきませんでした……。
件のソフトはWorkCheckerという、キーの押下回数をカウントするソフトなんですが(^^;
終了時にCSV形式でファイルを出力するもので、強制終了するとこれをやってくれないんですよ。

「終了」のほうは、とりあえず何とかなっているのでこれでいいとして、
もう一つうまく行かないことがありますので、よろしければお願いします。

Media Player Classicを「フルスクリーン」にしているときに、
383で挙げているスクリプトを走らせると、MPCのフルスクリーン化が解除されてしまうんですね。
これが「ウィンドウの最大化」なら、特に解除されることもないんですが……。

問題の部分はこんな感じになってます。

WinGetActiveTitle, player
Send, #b{APPSKEY}x
WinActivate, %player%

このSendをした際に、
タスクトレイにフォーカスが移ってタスクバーが出たままになるのを何とかしたくて
このような処理をしてみたんですが、先にも書いたとおり、
最大化したウィンドウでは期待どおりに動くものの、全画面化した場合はうまくいきません。
WinGetActiveTitleが、タイトルの取得のためにウィンドウ表示に戻してしまうんでしょうか……。

ちなみに、playerにはMPCの決め打ちができません。

390:名無しさん@お腹いっぱい。
06/01/12 21:23:04 HWiUEJ9g0
あ、ちなみに、MPC以外でも同じ状態になります。

それと、
WinGet, player, PID

WinActivate, ahk_pid %player%
とか、PIDじゃなくてIDだとかの場合も試しましたが、これもうまくいかず。

391:名無しさん@お腹いっぱい。
06/01/13 01:26:59 +pozkCUx0
今プログレスバーを半透明にしようとしているのですが、期待した表示になりません。

Progress,cwFFFFFF ,,name,time
winset,TransColor ,FFFFFF 50,time
return

esc::exitapp

ウィンドウを半透明にして文字とバーは透過なしにしたいのですが、出来ないのでしょうか?
これだとウィンドウが完全な透明、文字とバーが半透明になります。
Trans ,で設定するとウィンドウは半透明なのですが文字も半透明に。。トホホ。

392:名無しさん@お腹いっぱい。
06/01/13 12:15:47 5XB+c2x50
2枚重ね

393:391
06/01/13 17:00:20 dZX44Wpz0
>>392
ありがとう!発想を変えれば良かったんですね。希望の動作になったので報告までにはっときます。
オプションでツールウィンドウを指定してるのは、タスクバーに表示させたくないためです。

gui,add,text
Gui, Color,000000
gui,+ToolWindow +AlwaysOnTop +OwnDialogs -border
gui,show,w300 h200,back
winset,Trans, 50,back

Progress,cwC8D0D4 ctFFFFFF B,,name,time
Progress,50,,,time
winset,ExStyle,+0x00000080,time
winset,TransColor ,C8D0D4 255,time
return

esc::exitapp

394:381
06/01/14 21:15:58 6j6GF4sd0
いまだ解決せず。
キャレットの速度変更した後、Send,{Left}{Right}とか無理やりアクション起こすと
色々不具合がでるソフトもあるし・・・
SmartCaretはどうやってるんだろう。

395:383
06/01/17 10:21:04 aCgAJjPo0
一段落したのでまとめをさせてください。
したかったのは、プログラム全画面化時のキー押下回数のカウントでした。
カウントには>389で挙げているWorkCheckerというソフトを利用することにしていました。

はじめ>383にてScrollLockを使おうとしていたのは、
全画面化時でもキーボードインジケータによって動作中かどうかがわかるためです。
これによって挙動がおかしくなったかどうかはわかりませんが、>385さんの助言を受け、
起動キーを変更して(NumpadSubに)、動作情報はツールチップに表示させるようにしました。

いろいろ調べてみましたが、WorkCheckerのメッセージによる終了のさせ方がわからず、
タスクトレイにフォーカスを当ててキーをSendするというムリヤリな解決法をとりました。
その後WorkCheckerの使用をやめ、AutoHotkeyスクリプト内部の処理でカウントすることに。
これでスクリプト終了の問題は一応決着がつきました。

が、その数値をファイルに書きこむ際、エントリ名を取得しようとInputBoxを出すと、
>389と同じ状況になり、全画面化が解除されてしまいます。
最大化でなく全画面化なので、WinMaximizeでも状態を復帰させることができません。
いろいろやってみたところ、WinGetActiveTitleとかWinActivateには問題がなく、
プログラムの全画面化が解除されるのは、タスクトレイやInputBoxなど
他のウィンドウにフォーカスが移ったときであることを突き止めました。
また、この現象は、プログラムの最大化時や、
IEのキオスクモード(F11を押すとできる一種の全画面化)では発生しないこともわかりました。

以上です。
全画面化の解除問題は解決してないのですが、うまくいきそうにないので諦めることにしました。
プログラムはPerlのワンライナー程度のスクリプト処理をちょっとかじっていただけ、
Windowsプログラミング経験なしのド素人なので、
コメント行やエラー処理も含めて100行を越えるスクリプトを書いただけでいっぱいいっぱいです(^^;
皆さん、助言どうもありがとうございました。

396:名無しさん@お腹いっぱい。
06/01/17 13:41:14 aCgAJjPo0
まとめてみて、もしや、と思って試してみました。

全画面化中にAlt+Tabをしてみると、AHKスクリプトでの全画面化解除の挙動と一緒でした。
つまり、AHKスクリプト中に全画面化解除されるプログラムは、Alt+Tabでも解除され、
AHKスクリプト中に解除されないプログラムは、Alt+Tabでも解除されませんでした。
(最大化した場合や、IEのキオスクモード)
この問題の発生はAutoHotkeyに直接関係がなかったようです。お騒がせしました。

397:名無しさん@お腹いっぱい。
06/01/17 17:29:06 kObrtqt+0
全画面化解除されても、復帰させれば問題ないのなら、
全画面化解除されるアプリ毎に全画面化に必要な操作をAHKにさせれば良いんでねーの?
数が多いと嫌になるかもしれんが、大抵全画面化のホットキーは決まってるし。

398:名無しさん@お腹いっぱい。
06/01/22 12:49:22 2qAgcpH90
時間の計算で難儀してます....
時刻t1~時刻t2間の時間T[s]を求める際に、
T := t2 - t1
みたいな書き方はできるんですが、
時刻t2と時間T[s]から、
t1 := t2 - T
のような式だとうまくいきません。
たとえば、ここでT=300[s](5分)として計算すると、
t2を時間としてでなく、数値として解釈するようで、T=3:00(3分)として計算されてしまいます。
t1 := t2 - T, Second
とやると、今度は「TがYYYYMMDDHH24MISSのフォーマットではない」とエラーになるし、
EnvSubのマニュアルを見ていてもいまいちやり方がわかりません....

399:名無しさん@お腹いっぱい。
06/01/22 15:46:10 Yqz0MIUn0
EnvAddで-300秒を足すんじゃなかったけ?

400:名無しさん@お腹いっぱい。
06/01/22 16:19:08 1N3K73ci0
時間計算はEnvAddとEnvSubの扱いの違いに気がつかないとハマるな
過去スレでも何度か話題になってるから調べてみ

401:名無しさん@お腹いっぱい。
06/01/22 17:01:54 2qAgcpH90
ほ、ほんとだ...
>399,400 レスありがとうございました。
EnvAddのマニュアルにも、たしかにそれらしい文言がありますね。
でもこんなのわかんないよぅ...

402:名無しさん@お腹いっぱい。
06/01/22 17:12:45 v9Q+2/T40
タイトルバーで中クリックされたら処理を行うってこと(QuickDirみたいなもの)がやりたいんだけど、
どんな感じでやれば良いんでしょーか。とりあえず↓のようにやってみたけど、
SendMessageの使い方が間違ってるのか、うまくいかないっす。(ErrorLevelがFAILになる)
~MButton::
MouseGetPos, x, y, id
SetFormat, integer, H
x += 0
y += 0
xy := x + y * 0x10000
SendMessage, 0x84, 0, %xy%, ahk_id %id%
If ( ErrorLevel == 2 )
{
;ここに処理を入れる
}
return

403:名無しさん@お腹いっぱい。
06/01/22 17:52:51 69RhDVUi0
1.0.40.12から1.0.41にバージョンアップしたら、
  RWin up::Return
が効かなくなってしまいました。

AutoHotkeyを常駐させ、右Windowsキーを
  >#i::Send,{Up}
  >#k::Send,{Down}
のように使っているのですが、Windowsキーを押して
そのままはなすとスタートメニューがでるのがいやで
冒頭のものを一緒に書いていました。
ところが1.0.41ではスタートメニューがでてしまいます。

解決する方法があれば教えてください。

404:名無しさん@お腹いっぱい。
06/01/22 17:54:27 1N3K73ci0
0x84 て何だっけ?
値からメッセージ名探すの大変なんで質問する時はコメントとか入れてクレ


405:402
06/01/22 18:30:09 v9Q+2/T40
>>404
スイマセン。
コメント入れるとこんな感じです。
~MButton::
MouseGetPos, x, y, id ;カーソル下の座標とid取得
SetFormat, integer, H ;座標を16進数に変換
x += 0
y += 0
xy := x + y * 0x10000 ;座標を上位ワードと下位ワードにまとめる
SendMessage, 0x84, 0, %xy%, ahk_id %id% ;カーソル下のウィンドウにWM_NCHITTESTを送る
If ( ErrorLevel == 2 ) ;タイトルバーならば処理を実行
{
;ここに処理を入れる
}
return

メッセージに関してはここを参考にしました。
URLリンク(www.winapi-database.com)

406:名無しさん@お腹いっぱい。
06/01/22 19:02:30 GjGnwmrQ0
>>403
1.0.41 から流行らせるページの 2 stroke key も動かなくなっちゃいましたね。
本体のバグだと思うんで、本家の更新待ちです。

407:406
06/01/22 20:00:46 GjGnwmrQ0
すいません。 Ctrl key double tap の方でした…。

408:名無しさん@お腹いっぱい。
06/01/22 21:39:01 1N3K73ci0
>>405
とりあえず2つほど気がついた点。ただこれでも期待通りの値は取れてないが。

・SendMessage はウィンドウ指定より先にControlを指定する。(FAILの原因)
・MouseGetPosのX,Y座標はアクティブウィンドウの左上からの相対座標で取得される。
 (CoordMode,Mouse,Screenを実行してない場合)
 つかこのWM_NCHITTESTって「非クライアント領域のどの部分でマウスが操作されたか調べる」って
 なってるんだけど、いいのだろうか

~MButton::
MouseGetPos, x, y, id,ctl ;カーソル下の座標とid取得
xy := x + y * 0x10000 ;座標を上位ワードと下位ワードにまとめる
SendMessage, 0x84, 0, %xy%, ,A
MsgBox, ErrorLevel=%ErrorLevel%
return

自分もキャプション位置を取得するのにかなり面倒な関数組んでるので
こんな簡単にまとめられるならその方が有り難いんだがね


409:402
06/01/22 23:52:19 v9Q+2/T40
>>408
座標自体は16進変換しなくても良かったんですね。
自分もその座標の原点をどこにすればよいのか分からなかったので、とりあえずそのままやってみた次第です。
どうやら、Delphi製もしくはWTLを用いて作られたソフトではうまくいくようです。

>自分もキャプション位置を取得するのにかなり面倒な関数組んでるので
どのようなロジックで実装されているんでしょうか。

410:名無しさん@お腹いっぱい。
06/01/23 03:04:13 zfPva1iV0
>>409
ちと長いんで自ブログのほうに上げますた。無駄に助長だが一応コピペで当座は動くと思う
URLリンク(d.hatena.ne.jp)


411:403
06/01/23 22:02:12 mqTpMs440
>>406
そうなんですか。
では次のバージョンでの改善を望むことにします。

412:402
06/01/24 01:16:40 JUUu5mZd0
>>410
ありがとうございます。期待通りの動きとなりました。
ご苦労の程お察しします。
自分はSendMessageの挙動はいまいち理解できていなく、
根本的な解決法を考えられそうにないので、誰か識者の方ヘルプ^^

413:名無しさん@お腹いっぱい。
06/01/24 11:29:31 hmUrV7Tv0
winキーを単体で押したときだけ無効にするにはどう設定すればいいんでしょうか
win+Dとかの操作は有効にしたいんですけど

LWIN::Return

とすると全部無効になってしまいます。

414:名無しさん@お腹いっぱい。
06/01/24 12:41:36 ArnUgYQ30
質問前にせめて10レス前ぐらいは読みたまえよ

415:413
06/01/24 16:50:53 hmUrV7Tv0
1.0.40.12 で

LWIN up::Return

としても全部無効になってしまいます
どうしたらいいんでしょうか



416:名無しさん@お腹いっぱい。
06/01/24 23:18:38 Kbo1n5/E0
>>412
URLリンク(cgi19.plala.or.jp)

417:名無しさん@お腹いっぱい。
06/01/24 23:30:27 duKuEjYk0
>>413
LWIN::Return
LWIN & LWIN::Return;二つ目のLWIN部分は何でも良い。


裏技的だが・・v1.0.40.05ではこれで動いた。他verではどうなるか知らん。

418:名無しさん@お腹いっぱい。
06/01/24 23:35:41 duKuEjYk0
>>416
あぁ、なるほど、SendMessage自体を直に呼べばいいのか。目から鱗。
そうだよなぁ・・・気が付かなかったなぁ・・

419:名無しさん@お腹いっぱい。
06/01/25 00:09:26 1ITNklYD0
>>416
ぬおお、コンパクトだ。さすが

420:名無しさん@お腹いっぱい。
06/01/25 00:37:47 whVXuEi20
ぬるたん

                  ∩
                  ( ⌒)      ∩_ _ グッジョブ!!
                 /,. ノ      i .,,E)
             / /"      / /"
  _n  グッジョブ!!   / /_∧  ,/ノ'
 ( l    ∧_∧ / /*´∀`)//∧_∧   グッジョブ!!
  \ \ (*´∀`)(      / (*´∀`)     n
   ヽ___ ̄ ̄ ノ ヽ      |  ̄    \    ( E)
     /    /   \    ヽ フ    /ヽ ヽ_//


421:402
06/01/25 02:38:42 XjlFS14L0
>>416
(n‘∀‘)ηキテルワー!!
確かにDllCallから使った方が確実ですね。
さり気なくビットシフトなどを使っている辺り、自分との経験?の差を感じます…
改めてお二人に感謝。

422:名無しさん@お腹いっぱい。
06/01/25 04:04:49 8YZ6hNpP0
あら・・スクリーン座標にするだけで、AHKのSendMessageでも出来たよ・・・
問題はそこだったか・・

423:413
06/01/25 19:22:45 sklEJtBz0
>>417
1.0.41.00 で動きました!
ありがとう

424:名無しさん@お腹いっぱい。
06/01/26 00:09:38 NczzL1RK0
RButton & WheelDownにAltTabを割り振りました
特定のアプリだけ、この機能を無効にしたいのですがそれは可能でしょうか
Sendにするとすぐキーを離してしまうし、かといってifで条件分岐したあとにAltTabを置いても機能しません

425:名無しさん@お腹いっぱい。
06/01/26 03:33:13 AxRUycRL0
#IfWinActive

426:名無しさん@お腹いっぱい。
06/01/27 18:46:53 khUBsNcY0
点呼スレがピンポイントで狙われてるな、何でだろ

427:名無しさん@お腹いっぱい。
06/01/27 18:52:03 MkK/HyNo0
NP2のウィンドウに対してだけ急にahkが効かなくなっちゃったんですが
どうすればまた有効になるんでしょうか?

428:403
06/01/27 23:27:57 /9813JvU0
>>417
遅ればせながらありがとうございます。
それでうまくいきました。

429:名無しさん@お腹いっぱい。
06/01/28 14:18:33 +ZZFrik00
AHKだと、こういうコメントの書き方できませんね。

/*******************************************************************************
* これは、ahkのコメントを確認するためのサンプルです
*******************************************************************************/

これもダメ。

/*******************************************************************************
* これは、ahkのコメントを確認するためのサンプルです
****************************************************************************** */

これならOK。

/*******************************************************************************
* これは、ahkのコメントを確認するためのサンプルです
******************************************************************************
*/

430:名無しさん@お腹いっぱい。
06/01/28 14:37:46 9fE5ExNP0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;       これでいいじゃん          ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

431:名無しさん@お腹いっぱい。
06/01/28 15:18:26 M2n6ETLA0
/*
 行頭に無いとコメント終始認識されないよん
*/


432:名無しさん@お腹いっぱい。
06/01/28 16:09:27 QgFgpb9I0
ちょこちょこ弄ってたら常駐スクリプトが16KB突破…
Runコマンドで呼び出してるのも含めたら40KB超えてたよ。

AutoHotkeyって自由度高い分、各人がどんな使い方してるか気になる。
自分は無変換、変換、カナ/かなキーを修飾キーとしてキーやコマンド割り当てをするのがメイン。
各ウィンドウ位置の保存とかも簡単だし。
トリプルクリック、クワドロプルクリックでも自由に設定できるのも良いね。
あとは、エディットボックスならどんなソフト上にあるものでも
電卓・検索・辞書・コマンドランチャとして使えるようにしたりとか。

433:名無しさん@お腹いっぱい。
06/01/29 22:55:37 g1nyLRt50
各スクリプトの共通項を切り出してインクルードするのって無理だよね?


434:名無しさん@お腹いっぱい。
06/01/29 23:08:49 sQBDNXPy0
>>433
具体的に。

435:名無しさん@お腹いっぱい。
06/01/29 23:10:30 g1nyLRt50
AHKがインクルードファイルをサポートしてるか否か。
またそれに類する代替機能があるか。

436:名無しさん@お腹いっぱい。
06/01/29 23:18:01 sQBDNXPy0
>>435
URLリンク(lukewarm.s101.xrea.com)

437:名無しさん@お腹いっぱい。
06/01/30 00:25:20 jpKlrbYu0
gdiplus.dllで描画出来ないYO!!
GIFとかICONをPictureコントロールで透明色部分を背景透過して表示したいんだが、
うまくいかない・・

Gui, Add, Picture, AltSubmit BackgroundTrans, AAA.ico
Gui, Show

とかやっても透明部分が透過されないYO!!!
ちゃんとgdiplus.dllはAutoHotkey.exeのフォルダに入れてあるのに・・

へるぷみー><;
Win2Ksp4 Ahk1.0.41.00

438:名無しさん@お腹いっぱい。
06/01/30 01:41:27 uhBVy+7t0
>>437
dllが認識されてないとかかな。
system32ディレクトリに置いてみるとか、regsvr32で登録してみるとか、パス通すとかやっても駄目だった?

439:名無しさん@お腹いっぱい。
06/01/30 15:20:34 uhBVy+7t0
Run/RunWaitコマンドでコンソールアプリケーションに引数を与えて実行し、
標準出力を得たいんだけど、とりあえず直接標準出力を得るのは無理っぽいので、
ファイルにリダイレクトし、FileReadLineで読み込む方法をとることにした。

Run, %comspec% /c test.exe "引数" > %A_ScriptDir%\test.dat

んで、↑のようにやっても、「 > %A_ScriptDir%\test.dat」部分まで
test.exeの引数として認識されてしまうらしく、うまくいかない。
多分AHKは関係ないと思うんだけど、解決策求む。

440:名無しさん@お腹いっぱい。
06/01/30 22:16:04 llgn8y2u0
RunWait は試した?

441:439@携帯
06/01/30 22:46:29 Spq+eLJkO
>>440
YES
そもそもtest.exeに正しい値が渡っていないのであんまり関係ない感じ。
cmd.exeを経由しなくてもダメでした。
普通にコンソールで、
test.exe 引数 > test.dat
とやる分にはうまく行くんだけど…

442:名無しさん@お腹いっぱい。
06/01/30 23:57:09 LkEIKve40
うちでもうまく行くのと行かないのがあった気が。
上手く行かないの早々にあきらめて捨てちゃったんでもう憶えてないけど。

443:名無しさん@お腹いっぱい。
06/01/31 02:44:23 cbKaLT0a0
なんかダブルクォートをAHKで処理してる感じ
パラメータに日本語とか使ってない?


444:439
06/01/31 03:38:14 iIRAafqH0
>>443
g_calcっていう引数として式を与えると、Google電卓を使った結果を出力するソフトで、
引数としては、1+2*4とか、sin(3.14)のような1バイト文字しか使ってないっす。
URLリンク(www.vector.co.jp)

…結局面倒なんで、このソフトと同等の機能を持つAHKスクリプトを作って対処してしまいました。
簡単なエラー処理入れても5行程度で済むのね。
なので、自己解決したと言えばしたんだけど、せっかくだから、AHKで標準出力を確実に取得する方法を
後学のためにも知っておきたい。

445:名無しさん@お腹いっぱい。
06/01/31 11:20:44 333EyHKl0
てst

446:名無しさん@お腹いっぱい。
06/01/31 18:20:05 61oRgPKa0
ニーツオルグ見た?

447:名無しさん@お腹いっぱい。
06/01/31 18:28:13 R4U/vQRD0
あそこトップがでかいんだもん。

448:391
06/02/01 01:02:52 lbQsX6480
URLリンク(www.vector.co.jp)
コマンドライン型のメール送信ソフトなんだがAHKと組み合わせるとおもしろいな。
携帯にメール送るのに便利だわ。

449:名無しさん@お腹いっぱい。
06/02/01 01:04:48 lbQsX6480
名前消し忘れてた。はずかし。。。。

450:名無しさん@お腹いっぱい。
06/02/01 01:10:05 mATxrmSJ0
>>448
詳しく

451:名無しさん@お腹いっぱい。
06/02/01 01:15:27 Ll9eZFNT0
POP Out
URLリンク(www.vector.co.jp)
これでメールチェックも出来るお(多分)

452:名無しさん@お腹いっぱい。
06/02/01 07:17:12 CHFM6H+R0
>>439
URLリンク(cgi19.plala.or.jp)

453:名無しさん@お腹いっぱい。
06/02/01 13:09:29 vBsLlalo0
ファイルの名前を、現在アクティブになってるウィンドウのタイトルにつけかえる、
というスクリプトを書いてみたんですが……

#SingleInstance IGNORE
^r::
  f0 = test.txt
  FileAppend, test, %f0%
  WinGetActiveTitle, title
  StringReplace, title, title, `:,
  f1 = %title%.txt
  MsgBox, %f1%
  FileCopy, %f0%, %f1%
  MsgBox, %f0%
  return

まめFileのように、タイトルに「パス - まめFile4」のようになっていると、
ファイルがA_WorkingDirにできてくれないので、
「C:\ほにゃらら」となっている部分のコロンを落とすようにしてみたんですね。
その後のMsgBoxでちゃんと落ちているのは確認できたんですが、FileCopyは失敗してしまいます。
どうしたらよいでしょうか。これがダメ文字というやつですか?

454:名無しさん@お腹いっぱい。
06/02/01 15:19:14 qvxzsIy40
コロンはパスの一部なので削ったらダメ
タイトルが「パス - まめFile4」ってなってるのが原因なら、
パスじゃない部分「 - まめFile4」を削る。

ファイル名に日本語使ってないならダメ文字は関係ないよ

455:名無しさん@お腹いっぱい。
06/02/01 15:25:04 7xayIcgw0
あれだ、たぶん、

たとえば、WorkingDirがC\AHKだったとすると

C\AHKC\ほにゃらら.txtってことになるってことだろ。

456:名無しさん@お腹いっぱい。
06/02/01 15:51:43 7xayIcgw0
あ、ちょっと、的ずれてた・・
タダ単に、相対パス指定では\以外で始まる指定は出来ないってだけだた・・
ごめん<>

457:名無しさん@お腹いっぱい。
06/02/01 15:54:39 vBsLlalo0
えーと、こんな感じです。
C:\ahk  ←これがWorkingDirで、
C:\home   ←たとえばまめFile4でここを開いているとします。
「C:\ahk\"C:\home\ - まめFile4".txt」みたいな感じにしたいのですが、
;;ほんとはこんな名前のファイルはつくりたくないのです。
;;タイトルにパスが入るソフトの対策のためのテストというわけで。
「C:\home\ - まめFile4.txt」という名前で保存されることになるため、
実際にはC:\homeの下に「- まめFile4.txt」がつくられてしまうんですね。
で、これを回避したい、ということで。
それで、とりあえずコロンを落とすことにしてみたんですが……
あと、「\」も問題だと思ったので、「¥」に変えるとかしてみましたが、うまく行かず。
コロンを残しているとこんな感じになります。
「C:¥home¥ - まめFile4.txt」つまり、「C:」に「¥home¥ - まめFile4.txt」ができちゃう。

458:名無しさん@お腹いっぱい。
06/02/01 16:01:53 5DqBaWvy0
119 名前:unnamed.ahk[sage] 投稿日:06/02/01(水) 05:06 ID:???
そんなの聞く必要あるの?
この程度の簡単なものなら、見ればどういう動作するかはすぐにわかるんだから
自分にとって益があるなら使えばいいし、不要なら構わなければいいじゃん。
>>116を誰が何の用途に使おうとどうでもいいだろ。

↑こいつ何様?

459:名無しさん@お腹いっぱい。
06/02/01 16:03:04 vBsLlalo0
もう少し補足。
タイトルにパスが入って悪さをしさえしなければ問題がないんです。
で、ウィンドウのタイトルを拾うため、どうしてもファイル名に日本語が入ることは避けられません。
たとえば今このスレはJane Doe Styleで見てるんですが、これで同じ操作をすると、
タイトルが「Jane Doe Style 【ソフトウェア】 - AutoHotkey Theread 2」となっているので、
これ+.txtという名前にしたいわけなんです。
やっぱり難しいんですかね……

460:名無しさん@お腹いっぱい。
06/02/01 16:39:10 7xayIcgw0
いや、別に平気でしょ。ただ日本語入るとダメ文字に引っかかる可能性あるのでそこは考慮する必要があるかもしれない。
ただ、さっきの問題とは別だよ。

^r::
WinGetActiveTitle, title
StringReplace, title, title, `:,:
StringReplace, title, title, \,\ , All
msgbox, %title%
FileAppend, , %title%.txt

基本はこんな感じになる。タイトルのファイルがダメ文字無ければ
ワーキングディレクトリにちゃんとファイル出来るよ。

ダメ文字関連はここ参照
URLリンク(www.tierra.ne.jp)

461:名無しさん@お腹いっぱい。
06/02/01 16:44:07 7xayIcgw0
>タイトルのファイルがダメ文字無ければ
>ワーキングディレクトリにちゃんとファイル出来るよ。
文章めちゃくちゃだな・・(;´Д`)

タイトルにダメ文字含まれてなければ、ちゃんと
ワーキングディレクトリに狙ったとおりの名前のファイル出来るよ。

と言いたかった・・スレ汚れまくりごめん<>

462:名無しさん@お腹いっぱい。
06/02/01 17:22:32 qvxzsIy40
>>458
えー、そのスレの 118=120 だけど、ここに持ち込まんでも…
ちなみに大元の書込み人からは補足が入った模様です

463:名無しさん@お腹いっぱい。
06/02/01 17:37:40 vBsLlalo0
およよ…? 何かうまくいきますね。
すみません、レスいただいてありがとうございました。

464:名無しさん@お腹いっぱい。
06/02/01 17:49:47 7xayIcgw0
SerchStr=\/:,;*?"<>|
ReplaceStr=\/:,;*?”<>|
^r::
WinGetActiveTitle, title
c=0
Loop{
StringMid, s, SerchStr, c+1, 1
if !s
break
StringMid, r, ReplaceStr, c*2+1, 2
StringReplace, title, title, %s%, %r%, All
c++
}
msgbox, %title%
FileAppend, , %title%.txt


>>463
これでファイル名に使えない文字はOKかな・・

465:名無しさん@お腹いっぱい。
06/02/01 21:08:57 vBsLlalo0
うを、すばらしい!
そのまま組み込んでみます。重ね重ねありがとうでした<O>ペコリ

466:448
06/02/01 21:37:49 +NEdY0Ev0
;メールサーバー
host=mail.xxx.xxx.jp
;表示するメアド
mine=xxx@xxx.xx.jp
;送り先のメアド
address=xxx@xxx.xx.jp

filedelete,temp.txt
fileappend,,temp.txt
sleep,100
run,temp.txt
sleep,1000
winwaitclose,temp.txt
run,smail.exe -h%host% -f%mine% -Ftemp.txt %address%
return

こいつをsmailのフォルダにいれてAHKを起動。ノートパッド開くから本文書いて閉じる。これでメール送信完了です。
自分はiniでアドレス帳作って、メニューで選択、確認ボタン、終了後に送信ログ残すようにしてる。
表示メアドに携帯メアド設定しとけば、携帯料金浮いてなかなかおいしいです。
いちいちメールソフト立ち上げてヘッダ変えてっつーのがめんどくさいもんで。

467:439
06/02/02 17:06:47 T+u93vk30
>>452
何かDllCallだらけで、どういう仕組みになってるか良く理解できてないけど、
とりあえずうまく標準出力を取り込めたよ。サンクス。

468:名無しさん@お腹いっぱい。
06/02/02 17:09:23 RzOqQmwX0
出てるスクリプトまとめたいんだが 本人はスクリプト理解してないんだよなぁ。
やっぱある程度分かってる人がまとめた方がいいよね。

469:名無しさん@お腹いっぱい。
06/02/04 13:22:47 vcsivbfp0
Autohotkeyでは上手くテキストを取得できない
リストヴューのテキストを取得したいんだけど
(Clipyでは取れた。具体的にはnPOPのメール一覧)
コマンドラインでWINDOWとかクラスとかを指定してテキストをコピーしてくれるような
ツール知りませんか。

470:名無しさん@お腹いっぱい。
06/02/05 18:35:24 Uooh/wVt0
ネットの一時ファイルのうち、jpgファイルだけ削除したいのですが、

FileDelete, C:\Documents and Settings\ユーザー名\Local Settings\Temporary Internet Files\*jpg

とやっても消えてくれません。
Temporary Internet Filesって、普通じゃ消せないのでしょうか。

471:名無しさん@お腹いっぱい。
06/02/05 19:37:58 dd1IDrgA0
実際はその二階層下のフォルダに入っている
その書き方だと直下のJPGしか消さないかも
Temporary Internet Filesを Loopして拡張子が
JPGだったら消すようにしたらいいのではまいか。

472:名無しさん@お腹いっぱい。
06/02/05 21:13:30 Uooh/wVt0
>>471
content.ie5以下のフォルダにあるんですね。はじめて知りました。
以下のもので出来ました。感謝。

^#D::
path = C:\Documents and Settings\Admin\Local Settings\Temporary Internet Files\Content.IE5\
Loop, %path%*.jpg , 1 , 1
{
FileDelete, %A_LoopFileFullPath%
}
return

473:名無しさん@お腹いっぱい。
06/02/06 09:47:34 XthrTebI0
なまず日記さんがすげーことをやってるぞ

474:名無しさん@お腹いっぱい。
06/02/06 10:45:51 wtWU+HDQ0
あそこはすごすぎてワシャついていけんw

475:名無しさん@お腹いっぱい。
06/02/06 11:52:47 +ZyBL9kh0
よかった、ついて行けないのは俺だけじゃないんだw

すごすぎて感嘆のため息しか出ません

476:名無しさん@お腹いっぱい。
06/02/06 14:24:28 3MY6UK/h0
>>473
IMEの状態表示っていうの試したけど
iniが初期状態だと何も起きないね
iniの仕様調べてまで試す気起きないな

477:名無しさん@お腹いっぱい。
06/02/07 15:24:32 cd4qYKRv0
このスクリプトがうまくいかないのはなぜでしょうか。

Home::
SetTitleMatchMode, 2
/*
IfWinExist, メモ帳
{
ControlSend,, ^s
Send, a
}
*/
IfWinExist, xyzzy
{
ControlSend,, ^a
;Send, ^a
MsgBox, %ErrorLevel%
}
return

Homeキーを押したらxyzzyにCtrl+Aを送る、というテスト用に書いたスクリプトなんですが、
アクティブなxyzzyにSendするのはできても、ControlSendはアクティブかどうかに関わらず動いてくれません。
でもErrorLevelは「0」です。
試しにメモ帳で似たようなことをやってみたんですが(上のコメントアウト部分)、こちらはすんなり通りました。

478:名無しさん@お腹いっぱい。
06/02/07 16:56:51 I1jBElpS0
Home::
IfWinActive, xyzzy
send, ^a
else
send, {home}
return

479:名無しさん@お腹いっぱい。
06/02/07 16:58:56 I1jBElpS0
あ。勘違いしてたすまん・・・なかったことに・・・

480:名無しさん@お腹いっぱい。
06/02/07 18:50:22 I1jBElpS0
Home::
IfWinExist, xyzzy
SendMessage, 0x102, 0x1, 0x1E0001 ;lParamは指定しなくても動くみたいだが・・。
return


よくわからん。。これで一応逝けるけど。非アクティブだと反応が鈍い。
識者頼む。

481:名無しさん@お腹いっぱい。
06/02/07 18:56:46 I1jBElpS0
書き忘れ0x102はWM_CHARです。

482:名無しさん@お腹いっぱい。
06/02/07 19:00:10 fWzsdUXL0
出来ないなxyzzy
クラスの取得出来ないし、何か特殊なんじゃないか?

483:名無しさん@お腹いっぱい。
06/02/07 22:59:45 I1jBElpS0
>>480修正
Sendしちゃだめだったみたい。ポストしたらちゃんと動いた。

Home::
IfWinExist, xyzzy
PostMessage, 0x102, 0x1, 0x01E0001
;0x102はWM_CHAR  01E部分はスキャンコード、環境によると思うので適当に修正してくれ。つか、もしかしたらlParamは要らないかも。
return


484:名無しさん@お腹いっぱい。
06/02/08 02:59:44 ENi2eeYG0
xyzzyのクラス名は確か " "(スペース)かなんかだったと思う
テキスト描画部は "1" とかそんなん。

485:名無しさん@お腹いっぱい。
06/02/08 15:48:29 h/owdFIx0
>483
どうもいろいろ確かめていただいてありがとうございました。

ほとんどスレ違いになっちゃうのでこの書きこみだけにとどめますが、
どうもxyzzyの入力の受け付けはかなり特殊なようです。
他に試した限りでは、
場所に応じてIMEのON/OFFを自動切替する「Dさんの日本語じゃなきゃイヤン」というソフトも、
キーマップを入れ替える「姫踊子草」というソフトも、xyzzy上でだけは挙動不審になりました。
その都度メモ帳でも確かめましたが、こちらでは正常動作してました。
どちらも捨てがたいソフトながら、xyzzyでまともに動かないという一点で泣く泣く使用を諦めました。
ドライバレベルで動作する「窓使いの憂鬱」でもない限り、
入力関係ソフトにとってxyzzyは鬼門のようです。

486:名無しさん@お腹いっぱい。
06/02/11 21:24:33 ylI57ddE0
スクリプトのコマンドラインオプションの出現位置を可変にしたいのですが、うまくいきません。

^o::
Loop, %0%
{
;if (%1% = aaa)
if (%A_Index% = aaa)
MsgBox, hit!
}
return

Ctrl+Oで引数表示というサンプルを書いてみました。
はじめ引数に「aaa」だけ指定して、
このコメントアウトしている部分の条件で行なうと、きちんとhitしました。
そこで今度は「bbb aaa」を引数に指定してみて、上記のように書いてみたんですが×。
「%A_Index%」を「%%A_Index%%」としてみたら案の定怒られました……。
引数の出現位置って決まってないとダメなんでしょうか???

487:名無しさん@お腹いっぱい。
06/02/12 02:36:41 L6cRhp4J0
すいません、本家のサイトで調べて自己解決しました。
しかし、こんなやり方ほとんど裏技っぽい……。

param = %%A_Index%% はダメだけど、
param := %A_Index% ならOK、とのこと。

488:名無しさん@お腹いっぱい。
06/02/12 02:40:14 2QBETCrR0
ネットゲームなんかで割り当てたホットキーが使えなくなるのはなんとかできないものでしょうか?
窓使いの憂鬱でも使うしかないのでしょうか・・・

489:名無しさん@お腹いっぱい。
06/02/12 02:46:26 gYCfWe6P0
>>487
外出。

490:sage
06/02/13 00:13:32 xfk4rPhl0
質問です
お試しに使い出したらすごいはまったんですけど
皆さん割り当てるキーってなんかうまいことやってますか?
できるだけ他のアプリのショートカットとは競合しないように
設定したいのですが,何が安全なのかわかりません
コツがあったらお願いします!

491:名無しさん@お腹いっぱい。
06/02/13 00:17:29 C1wU8uUC0
sageはメール欄にどうぞ

492:490
06/02/13 00:34:08 xfk4rPhl0
だな・・・

多分生まれて初めてのミスだけど自然と心地良い

493:名無しさん@お腹いっぱい。
06/02/13 01:06:49 DnCFW1yt0
>>490
Ctrl+Win+○
をAutoHotKey用のショートカットにしてる。これならほとんど被らないし。

^#G ;選択文字列をググる
^#W ;壁紙変更
^#P ;スクリーンショットを時刻.pngで保存

みたいな感じ。実際はこのショートカットをマウスジェスチャーに割り振ってたりする。
AutoHotKeyのマウスジェスチャーに統合したいんだが、めんどいw

494:名無しさん@お腹いっぱい。
06/02/13 06:24:46 RLYX7csf0
これはバグ?
j < %i% で比較すると i < j が表示され、
i > %j% で比較すると i > j が表示される。
両方%で囲むと i < j になる。

^i::
i = 1
j = 2

;if (j < %i%)
if (i > %j%)
;if (%j% < %i%)
;if (%i% > %j%)
MsgBox, i > j
else
MsgBox, i < j
return

495:名無しさん@お腹いっぱい。
06/02/13 07:46:35 VjRV7iIc0
そりゃ文字列と数字を比較演算した場合の当然の結果だと思うが。
比較演算で数値と文字列扱えるどの言語だって同じ仕様でしょ。

MsgBoxに i と書いて文字列の"i"が展開されてるのを見れば気付きそうなものだが。

496:名無しさん@お腹いっぱい。
06/02/13 08:17:16 RLYX7csf0
そりゃ文字列と数字を比較演算した場合の当然の結果だと思うけど、

URLリンク(lukewarm.s101.xrea.com)
条件分岐
If文で条件分岐が行える。
else文で条件に一致しなかったときの処理も記述できる。
比較条件は、if var = valueという形で記述できる。
比較演算子は、「=」、「<>」(not equal)、「>」「<」「>=」「<=」が使用できる。
左辺には変数名が来るが、右辺には値がこなければならないので、「%」で挟んで変数の内容を展開するようにする必要がある。


この最後の行に書いてあるでしょ。
( )でくくるのがよくないのか。

497:名無しさん@お腹いっぱい。
06/02/13 08:29:14 RLYX7csf0
URLリンク(www.autohotkey.com)
( )でくくると文法が変わるわけね。この場合は
if (i > j)
と書かなければいけなかった、ということで。
……なんだか仕様が混乱してるなあ。

498:名無しさん@お腹いっぱい。
06/02/13 14:16:14 HZjUhtGG0
たしかに、まぎらわしい仕様ではあるな

499:名無しさん@お腹いっぱい。
06/02/14 15:34:05 RVF5Wq5S0
WinSet, TransColorで透明色を指定できるけど、
この色だけ半透明にするって指定はできない?
例えば、WinSet, TransColor, AABBCC 127, WinTitleと書くと
AABBCCは完全に透明になり、それ以外の部分が半透明になってしまう。

500:名無しさん@お腹いっぱい。
06/02/14 16:09:25 kdmpCnCA0
>>499
できないんだよそれ。出来たらいいなとは思う。

501:名無しさん@お腹いっぱい。
06/02/14 17:59:57 5RpU6d3N0
>>499
以前それがやりたくてここで質問したものです
AUTHOTKEYのウィンドウならこれで出来ました
>>391-393
通常のウィンドウは。。無理なんだろな。。

502:499
06/02/14 20:23:21 RVF5Wq5S0
>>500-501
なるほど…
AutoHotkeyの仕様なのかOSの仕様なのか知らないけど、ちと残念。
透明になっても良いんだけど、クリックが素通りしてしまうと不便なんだよなぁ。

503:名無しさん@お腹いっぱい。
06/02/15 00:05:58 9Es2AScX0
もっとメニュー作成機能を強化して欲しいかも。
・アイコン表示
・1行だけならサブルーチン化しなくてもMenuコマンドにそのまま記述可
・メニューの複数列表示
・オーナードローメニュー

オーナードローメニューは面倒だと思うけど上3つはできると良いな。

504:名無しさん@お腹いっぱい。
06/02/15 08:41:57 SX93VEbb0
Win起動したときにAutoHotkey.iniが勝手に開くようになったんだけどなんでだろう?

505:名無しさん@お腹いっぱい。
06/02/15 14:42:20 4hb2BCE90
>>504
スタートアップにショートカットじゃなくて実体を入れた罠?

506:名無しさん@お腹いっぱい。
06/02/15 14:45:57 l6zgqL1t0
いや、INI本体のショートカットを入れたんだろう
INIだからメモ調かなんかで開くわな。

507:名無しさん@お腹いっぱい。
06/02/15 17:24:49 ve0MRSui0
Winnyで広がるahkウィルスとか書いたら楽しそうだな。
インストールベースが少ないからあんま広がらないか。

508:名無しさん@お腹いっぱい。
06/02/15 20:06:31 JUqdYKTh0
ahkより素直にjsやvbsで書いた方が広まるジャマイカ

509:名無しさん@お腹いっぱい。
06/02/15 20:18:50 SX93VEbb0
>>506
正解。
なぜかスタートアップにiniのショートカットが入ってた。
入れた覚えないのにってかしばらくAHKいじってないのに。
不気味。

510:名無しさん@お腹いっぱい。
06/02/16 13:26:06 h5aXoB5n0
同一キー定義をアクティブ窓ごとに別々で書けるようになったみたいね(まだ試してない)
URLリンク(www.autohotkey.com)
これでいちいちキー定義のほうで条件分岐しなくてもよくなるかな
今まではアクティブ窓を追いかけ続ける無限loop回してやりくりしてたけど


511:名無しさん@お腹いっぱい。
06/02/16 13:58:21 EqR0wQoB0
登録も管理も面倒だったけど、これでだいぶよくなった

512:名無しさん@お腹いっぱい。
06/02/16 14:24:10 nqNAQta60
便利になったとは思うけどホットキーなら
ループで監視しなくても押された瞬間だけ判定すればいのでは

513:名無しさん@お腹いっぱい。
06/02/16 14:37:33 RHJx/nzR0
>>510
>無限loop
アクティブウィンドウ監視して変わるたびに
Hotkeyコマンド使って切り替えみたいな感じ?

514:名無しさん@お腹いっぱい。
06/02/16 14:39:38 JGq1Z4Yk0
ほっとけい

515:名無しさん@お腹いっぱい。
06/02/18 10:17:30 WrtMVw3N0
覚えらんない人のためのオンラインソフト備忘録 でこのソフトの
事が取り上げられてて興味が沸いたので、勢いこちらのスレに来てみたら。。。

>>1はいったい何なんですか!?さっぱりわかりません!
それともスレ立て主は外人ですか?誰か僕にわかるように説明してくさい!

516:名無しさん@お腹いっぱい。
06/02/18 11:14:12 KVqPeB680
(´・ω・`)知らんがな

517:名無しさん@お腹いっぱい。
06/02/18 21:53:53 JQ9unHlx0
なまずの人ってここも見てるよね
2バイト文字対策の使わせてもらいました
どうもです

518:名無しさん@お腹いっぱい。
06/02/18 22:01:48 wweffrMN0
アレの使い方がまだ分かんにゃい…

519:名無しさん@お腹いっぱい。
06/02/18 22:01:56 JQ9unHlx0
あとせっかく作ったから晒しとく。動けばいいって感じで作ってるから美しくないけど。
ディレクトリをドロップしたら中のファイルを一つ上の階層にコピーしてディレクトリを消すスクリプト
if 1 =
{
msgbox,ディレクトリをドロップしたら中のファイルを一つ上の階層にコピーしてディレクトリを消します`n何か残ったらディレクトリを消しません
exitapp
}
MsgBox , 4355,,移動するファイルに同名のファイルが存在した場合上書きしますか?
IfMsgBox, Cancel, exitapp
IfMsgBox, yes, SetEnv, oflg , 1
IfMsgBox, no, SetEnv, oflg , 0
Loop , %0%
{
src:=%A_Index%
FileGetAttrib, att , %src%
if att<>D
Continue
MBS_SplitPath( src , outFileName1, outDir1, outExtension1, outNameNoExt1, outDrive1 )
FileDelete, %src%\Thumbs.db
if outDir1 = %OutDrive1%
FileMove, %src%, %outDir1%\ , %oflg%
else
FileMove, %src%, %outDir1% , %oflg%
Loop, %src%\* , 2
{
MBS_SplitPath( A_LoopFileFullPath , outFileName2, outDir2, outExtension2, outNameNoExt2, outDrive2 )
FileMoveDir,%A_LoopFileFullPath% ,%outDir1%\%outFileName2% ,%oflg%
FileRemoveDir, %A_LoopFileFullPath%
}
FileRemoveDir, %src%
}
exitapp

520:名無しさん@お腹いっぱい。
06/02/18 22:04:14 JQ9unHlx0
>>518
俺もIMEのは謎だ

521:名無しさん@お腹いっぱい。
06/02/18 23:17:16 Iuqt5cXz0
全角→半角関数使わせてもらってます。
ヤフオクなんかで、全角で書かれた口座番号をコピペするのが格段に楽になりました。

522:名無しさん@お腹いっぱい。
06/02/20 15:30:05 bHvHlGfQ0
単純な#define部分だけで良いから、自動でWINUSER.H等をインクルードして欲しいなぁ。
一々メッセージを使うときにコメントでメモ書きするのめんどい。

523:名無しさん@お腹いっぱい。
06/02/22 00:15:57 JEPVrHVd0
あるAppのウインドウをWindowSpyで調べたところ、どのウインドウでもWindow Title & Classが
すべて同じ値を返す場合、他の方法でウインドウをマッチさせる方法はありますか?

524:名無しさん@お腹いっぱい。
06/02/22 00:19:51 gmGHCXSw0
はい

525:名無しさん@お腹いっぱい。
06/02/23 02:28:24 b2eEMwCj0
質問です。
AutoHotKeyはイベントに対して処理をするということは可能でしょうか。
具体的には
「あるウインドウが閉じられようとしたら、閉じる代わりに非表示にする」
という動作をするようにしたいのですが。


526:名無しさん@お腹いっぱい。
06/02/23 11:31:49 jHCXuL6/0
ポチエスに複数ファイルを送るとショートファイルネームで処理されちゃうんだけど
これをAHK内でロングファイルネームに戻したいと思ったんだが、
なんかそれっぽい記述がリファレンスに見当たらない

なんかいい方法ない???

527:名無しさん@お腹いっぱい。
06/02/23 12:43:38 Mi3jCVds0
>>526
%A_LoopFileName%

528:名無しさん@お腹いっぱい。
06/02/23 15:24:00 OafhHQu10
>>527
引数でやってきたものを処理したいんだけどできるかな。
しばらく考えたが思いつかない
(1)ぽちエスからショートファイルネームが複数やってくる
(2)それをロングに変換してファイルに書き出す
みたいな感じなんだけど。

529:名無しさん@お腹いっぱい。
06/02/23 15:36:32 Mi3jCVds0
>>528
Loop, %0%
{
i := %A_Index%
Loop, %i%
{
MsgBox, %i%`n%A_LoopFileName%`n%A_LoopFileFullPath%`n%A_LoopFileLongPath%`n%A_LoopFileDir%
}
}


530:名無しさん@お腹いっぱい。
06/02/23 15:40:51 OafhHQu10
すげ、できた!!
ファイル名でLoopなんて出来るのか。
サンクス!!!!!

531:名無しさん@お腹いっぱい。
06/02/24 14:00:22 PyEBwfs70
流行らせるページの管理人の日記がすごい
TrayCommandもどきに感動
ついでにTrayExpandもどきも作ってくれないかとずうずうしい要望をしてみる

532:名無しさん@お腹いっぱい。
06/02/24 18:39:48 LMN2OTD20
Alt+Tab代価するようなスクリプトつくってほしいな

533:名無しさん@お腹いっぱい。
06/02/24 21:52:20 7qRRIOKj0
AltTabコマンドじゃだめなの?

534:名無しさん@お腹いっぱい。
06/02/25 00:57:19 HuCPqrC00
流行らせるページに一つあった

535:名無しさん@お腹いっぱい。
06/02/25 02:19:14 TlCaEqJP0
#IfWinActive, AutoHotkey.ini ahk_class Hidemaru32Class
^s::
Send, ^s
sleep, 1000
Reload
return

リロードが面倒くさいのでAutoHotkey.ini編集中に上書き保存したらリロードするってのを考えた
一応sleep入れてみたんだけどこのsleepっているのかな?

536:名無しさん@お腹いっぱい。
06/02/25 06:04:04 WlTtzrS/0
すみません、こちらの皆さんには初歩的すぎるかもしれませんが、
  マウスのボタンを押している間、
  100mm秒間隔でクリックを連打
させるスクリプトはどう書けばいいのでしょうか?

537:名無しさん@お腹いっぱい。
06/02/25 08:53:08 6LCnKr020
>>535
入れといたほうがよろし

538:名無しさん@お腹いっぱい。
06/02/25 08:57:33 9NjRh94x0
>>535
1000msが妥当かは環境によるので何とも言えんが、ディレイは入れるべきだろうね

好きずきだけど、エディタ側にマクロ機能があるならそっちでやったほうが
無駄な待ち時間も発生しないし安全ではあるな。
自分は秀丸側のマクロでやらせてる

539:名無しさん@お腹いっぱい。
06/02/25 10:02:04 6LCnKr020
>>535
使ってるエディタが秀丸だったのか。
んじゃ、マクロの方がいいね。

540:名無しさん@お腹いっぱい。
06/02/25 10:30:39 HuCPqrC00
更新日時見れば

541:名無しさん@お腹いっぱい。
06/02/25 12:44:23 WlTtzrS/0
loopを使えばいいの?どうやって止めるの?

542:531
06/02/25 12:53:27 Rs6mXlji0
すごい!
たとえ私の要望から作ったのではないとしても本当にありがとうございます!

543:名無しさん@お腹いっぱい。
06/02/25 13:02:37 CnEGJgUv0
あんまりクリックしすぎると
モニターに穴があくからやめたほうがいいよ。
漏れのディスプレイ、内部配線見えまくりだし

544:名無しさん@お腹いっぱい。
06/02/25 13:06:05 9NjRh94x0
break

>マウスのボタンを押している間、100mm秒間隔でクリックを連打
トリガはホイールクリックに割り当てるとか、別のキーでやるつもりなら大丈夫だが
左ボタン押下中に、左クリ連打とかって割り当ててしまうとどえらいことになるぞ
あんまり分かってなさそうなので一応忠告しとく

545:名無しさん@お腹いっぱい。
06/02/25 17:06:34 veunGidG0
2段階キーマップをやりたくてテストコードを書いてみたのですが
わからないことがあるので教えてください。
fx -> f
fs -> s
ff -> k
を意図して書いたのですが
ff -> k
が上手くいかないんです。
新しいスレッドが生成されるせいかと思うのですが
上手くやる方法ありますか?
ちなみにコードはこれです。厨房質問ですいません。
f::
{
Input,InputChar,C I L1 ,{Esc},x,s,f
if ErrorLevel=Match
{
if InputChar=x
send, f
if InputChar=s
Send, s
if inputchar=f
send, k
}
return
}

546:名無しさん@お腹いっぱい。
06/02/25 17:11:40 HuCPqrC00
:*:fx::f
:*:fs::s
:*:ff::k

Hotstringでこうやれば?

547:名無しさん@お腹いっぱい。
06/02/25 18:15:37 veunGidG0
>>546
レスありがとうございます。
試してみます。

548:名無しさん@お腹いっぱい。
06/02/25 18:26:07 WlTtzrS/0
さっぱりわかりません。
Mbutton::
Count = 1
loop
{
if Count > 20
break
if Count < 19
sleep,50
send {Lbutton}
Count = %Count% + 1
}
return
Lbutton up::
Count = 20
return

549:名無しさん@お腹いっぱい。
06/02/25 22:58:36 9NjRh94x0
MouseClick
または
send, {Lbutton Down}
send, {Lbutton Up}


550:名無しさん@お腹いっぱい。
06/02/25 23:08:33 Rs6mXlji0
MButton::
Loop
{
GetKeyState,keyState,MButton,P
If(keyState="D")
{
Send,{LButton}
Sleep,100
}
Else Break
}
return

これでできると思う

551:名無しさん@お腹いっぱい。
06/02/26 10:51:10 oMn9Wnsa0
あんまりよそで迷惑かけちゃダメ!

552:名無しさん@お腹いっぱい。
06/02/26 12:43:40 pNeAqWnD0
TClockの「タスクスイッチにアイコンのみ表示」「平らなトレイ」「平らなタスクスイッチ」「スタートボタンを隠す」
の機能をAHKで実現したいと考えています。

URLリンク(homepage1.nifty.com)
ここを読んで「フックを使ってサブクラス化する」ということはわかったんですが、
AHKで可能なのでしょうか?

553:名無しさん@お腹いっぱい。
06/02/27 00:03:04 l9PFBXTs0
サブクラス化は時計に描画するときの奴じゃない?
TB_SETSTYLEメッセージでTBSTYLE_FLATとかをセットすれば行けるような気がする

554:552
06/02/27 00:49:18 tOahKDvK0
>>553
SendMessage,0x438,0,0x800,ToolbarWindow322,ahk_class Shell_TrayWnd
;0x438:TB_SETSTYLE 0x800:TBSTYLE_FLAT

こんな感じでしょうか?
OSはXPです。やってもらえるとわかるんですが、フラットに一応なりますがちょっとおかしいです。
あくまでTClockのようなものを目指しています。

それと、>>552にの中では「タスクスイッチにアイコンのみ表示」が自分には一番重要なんですが
これもメッセージだけでいけるんでしょうか?

555:名無しさん@お腹いっぱい。
06/02/27 02:23:25 A+gy7pJs0
とりあえずGETした値に|や&~でスタイルを足したり引いたりしないと駄目かと

556:名無しさん@お腹いっぱい。
06/02/27 10:22:33 NeNYGSjC0
AutoHotkeyでfenrir風スゴス

557:名無しさん@お腹いっぱい。
06/02/27 10:28:09 j85wo7Eo0


558:名無しさん@お腹いっぱい。
06/02/27 11:44:42 oF4YUTyr0
>>556
どこ?

559:名無しさん@お腹いっぱい。
06/02/27 11:59:01 TYvekXx40
ぬるど

560:552
06/02/27 14:03:58 tOahKDvK0
>>555
うっかりしてました。
SendMessage,0x438,0,0x52009B45,ToolbarWindow322,ahk_class Shell_TrayWnd
これで「平らなタスクスイッチ」は実現できました。

ただ、同じように
SendMessage,0x438,0,0x56008B4D,ToolbarWindow321,ahk_class Shell_TrayWnd
とやっても何故か「平らなトレイ」はできません。


561:名無しさん@お腹いっぱい。
06/02/27 15:59:24 rTfpn8m/0
デスクトップ上やエクスプローラーで、マウスが掴んでいたり、選択状態にあるファイルの収得って出来ます?
選択されてるファイルを移動したり、エディタで開いたりといった、一括処理をしたいんです。

562:名無しさん@お腹いっぱい。
06/02/27 16:36:23 8205XDO60
流行らせるページや、なまず日記さんのところにある修飾キーの複数回押しに機能を割り当てる
スクリプトを使用したいのですが、キーを長押ししたときに連続入力されて複数回実行されてしま
います。
これを回避するために修飾キーの長押し時の連続入力?を無効にして、長押し時は1回の入力と
する方法があれば教えていただけないでしょうか。

563:名無しさん@お腹いっぱい。
06/02/27 18:13:11 tOahKDvK0
>>561
ファイラー、スクリプト、ソフトなどでパスを一度クリップボードに送ればできますよ。

>>562
KeyWaitを使えばできます。おそらく。
流行らせるページの例を拝借しますが、

~Ctrl::
if A_TickCount < %ctrldouble%
{
;some action
ctrldouble=0
}
else
{
KeyWait,Ctrl ;これを追加
ctrldouble=%A_TickCount%
ctrldouble+=400
}
return


564:562
06/02/27 18:29:23 8205XDO60
>>563
ありがとうございます。
思っていたとおりの動作をしてくれました。
コピーをしようとして、設定していたアプリが多重起動したときは焦りました。


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