<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../../../../../css/rss/feedAtom.xsl" media="screen" type="text/xsl"?>

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" version="0.3" xml:lang="utf-8">  
  <title>名称未定っぽい。</title>  
  <link rel="alternate" type="text/html" href="http://poimono.exblog.jp"/>  
  <modified>2012-04-18T00:52:37+09:00</modified>  
  <author>
    <name>lordnoesis</name>
  </author>  
  <tagline>日記っぽかったり、チラシの裏っぽかったり。通称POI。</tagline>  
  <generator url="http://www.exblog.jp/">Excite Blog</generator>  
  <link rel="start" href="http://rss.exblog.jp/rss/exblog/poimono/atom.xml" type="application/rss+xml"/>  
  <entry> 
    <title>AutoHotKey_Lで、OperaのRamDisk運用を便利にしたかった……。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17833596/"/>  
    <id>http://poimono.exblog.jp/17833596/</id>  
    <issued>2012-04-16T22:39:00+09:00</issued>  
    <modified>2012-04-18T00:52:37+09:00</modified>  
    <created>2012-04-16T22:41:14+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　前回の更新直後に「コピーのタイミングってWindowsの起動/終了時でいいんじゃ……」と遅まきながら気づいてしまい、レストア/バックアップ機能だけ取り出し強化したのだが、結局、「バッチでXCOPY使えばいい」の域を出られなかった残念なAHKスクリプト。　一応、起動時にOperaをRamDiskにコピーし、Opera終了時/Windows終了時には自動でバックアップしてくれる。――のだが、バックアップ対象を絞らないと30秒ほどかかるので、レジストリで「応答のないアプリケーションを自動で終了する」をONにしてると間に合わない。　グループポリシーが使える環境の人は、シャットダウンスクリプトでXCOPY使うのが正解。でなければ、RamDiskを自動バックアップ対応のものに変えれ。; --------- --------- --------- --------- ---------<br/>
;<br/>
; CopyOpera.ahk<br/>
;<br/>
; ・起動時にOperaをRamDiskにコピー(レストア)する。<br/>
; ・常駐中はOperaを監視し、隙あらばHDDにコピー（バックアップ）する。<br/>
; 　・Operaが終了した時や、Windowsが終了する時など。<br/>
; ・指定フォルダの除外コピーが可能（cacheフォルダやmailフォルダなど）<br/>
; <br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
#Persistent<br/>
<br/>
&nbsp;&nbsp;OperaPath := "C:\Program Files\Opera\Opera"&nbsp;&nbsp;; Opera.exeの存在するフルパスを指定。<br/>
&nbsp;&nbsp;RamPath := "R:\Opera"&nbsp;&nbsp;; Operaのコピー先となるフルパスを指定。<br/>
<br/>
&nbsp;&nbsp;NGPathR := "profile\cache | profile\icons | profile\mail | profile\opcache | profile\temporary_downloads"&nbsp;&nbsp;; レストアしないディレクトリをOperaPathからの相対パスで指定<br/>
&nbsp;&nbsp;NGPathB := NGPathR&nbsp;&nbsp;; バックアップしないディレクトリを、RamPathからの相対パスで指定<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
&nbsp;&nbsp;OperaPath := CutLastDelimiter(OperaPath), RamPath := CutLastDelimiter(RamPath)<br/>
&nbsp;&nbsp;NGPathR := ConvList(NGPathR), NGPathB := ConvList(NGPathB)<br/>
<br/>
&nbsp;&nbsp;OpBackupSW := 0<br/>
<br/>
&nbsp;&nbsp;gosub, OpRestore<br/>
<br/>
&nbsp;&nbsp;SplashView("OperaReady!")<br/>
<br/>
&nbsp;&nbsp;OnExit, ExitOp<br/>
&nbsp;&nbsp;SetTimer, CheckOp, 5000<br/>
return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
ExitOp:<br/>
&nbsp;&nbsp;if OpBackupSW {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Process, WaitClose, opera.exe<br/>
&nbsp;&nbsp;&nbsp;&nbsp;gosub, OpBackup<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SplashView("OperaBackup!")<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Sleep, 3000<br/>
&nbsp;&nbsp;}<br/>
ExitApp<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
CheckOp:<br/>
&nbsp;&nbsp;Cnt++<br/>
&nbsp;&nbsp;if (30 < Cnt) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Cnt := 0<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileCopy, %RamPath%\profile\sessions\autosave.win, %OperaPath%\profile\sessions\autosave.win, 1<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;Process, WaitClose, opera.exe, 1<br/>
&nbsp;&nbsp;if (0 == ErrorLevel) { ; Operaが動いていなければ<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if OpBackupSW {&nbsp;&nbsp;; まだバックアップされていなければ<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gosub, OpBackup<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SplashView("OperaBackup!")<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpBackupSW := 0<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;} else{&nbsp;&nbsp;; Operaが動いていれば<br/>
&nbsp;&nbsp;&nbsp;&nbsp;OpBackupSW := 1<br/>
&nbsp;&nbsp;}<br/>
return<br/>
<br/>
OpRestore:<br/>
&nbsp;&nbsp;DirList := DigDirList(OperaPath, OperaPath, NGPathR)<br/>
&nbsp;&nbsp;DirSet(RamPath, DirList)<br/>
&nbsp;&nbsp;DirListCopy(DirList, OperaPath, RamPath)<br/>
return<br/>
<br/>
OpBackup:<br/>
&nbsp;&nbsp;DirList := DigDirList(RamPath, RamPath, NGPathB)<br/>
&nbsp;&nbsp;DirSet(OperaPath, DirList)<br/>
&nbsp;&nbsp;DirListCopy(DirList, RamPath, OperaPath)<br/>
return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
ConvList(FileList) {<br/>
&nbsp;&nbsp;Res := ""<br/>
&nbsp;&nbsp;Loop, Parse, FileList, |, %A_Space% \<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if ("" == A_LoopField)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FieldBuf := CutLastDelimiter(A_LoopField)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;result := result FieldBuf "`n"<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;return, CutLastNL(result)<br/>
}<br/>
<br/>
GetDirList(TrgDir, RootPath , NGList) {<br/>
&nbsp;&nbsp;if ("" == TrgDir)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;return<br/>
&nbsp;&nbsp;result := ""<br/>
&nbsp;&nbsp;LoopPattern := RootPath "\" CutRootPath(TrgDir, RootPath) "\*"<br/>
&nbsp;&nbsp;Loop, %LoopPattern%, 2, 0<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;GetDir := CutRootPath(A_LoopFileLongPath, RootPath)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if !NGCheck(GetDir, NGList)　<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result := result GetDir "`n"<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;return, CutLastNL(result)<br/>
}<br/>
<br/>
DigDirList(TrgPath, RootPath, NGList) {<br/>
&nbsp;&nbsp;DirList := "`n"<br/>
&nbsp;&nbsp;TrgDirList := GetDirList(TrgPath, RootPath, NGList) "`n"<br/>
&nbsp;&nbsp;ResDirList := ""<br/>
&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop, Parse, TrgDirList, `n<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResDir := GetDirList(A_LoopField, RootPath, NGList)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ("" != ResDir)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResDirList := ResDirlist ResDir "`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;DirList := DirList TrgDirList<br/>
&nbsp;&nbsp;&nbsp;&nbsp;TrgDirList := ResDirList<br/>
&nbsp;&nbsp;&nbsp;&nbsp;ResDirList := ""<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if ("" == TrgDirList)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;return, CutLastNL(DirList)<br/>
}<br/>
<br/>
DirSet(TrgPath, DirList) {<br/>
&nbsp;&nbsp;Loop, Parse, DirList, `n<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileCreateDir, %TrgPath%\%A_LoopField%<br/>
&nbsp;&nbsp;return<br/>
}<br/>
<br/>
DirListCopy(DirList, RootPath, SendPath) {<br/>
&nbsp;&nbsp;Loop, Parse, DirList, `n<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileCopy, %RootPath%\%A_LoopField%\*, %SendPath%\%A_LoopField%, 1<br/>
&nbsp;&nbsp;return<br/>
}<br/>
<br/>
NGCheck(Keyword, NGList) {<br/>
&nbsp;&nbsp;Loop, Parse, NGList, `n<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if (1 == RegExMatch(Keyword, "s)^" EscRegEx(A_LoopField)))<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return, 1<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;return, "0"<br/>
}<br/>
<br/>
CutLastDelimiter(TrgPath) {<br/>
&nbsp;&nbsp;StringRight, CharBuf, TrgPath, 1<br/>
&nbsp;&nbsp;if ("\" == CharBuf)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;StringTrimRight, TrgPath, TrgPath, 1<br/>
&nbsp;&nbsp;return, TrgPath<br/>
}<br/>
<br/>
CutLastNL(TrgPath) {<br/>
&nbsp;&nbsp;result := RegExReplace(TrgPath, "s)[\r\n]+\z", "", $, 1)<br/>
&nbsp;&nbsp;return, Result<br/>
}<br/>
<br/>
CutRootPath(TrgPath, RootPath) {<br/>
&nbsp;&nbsp;return, RegExReplace(TrgPath, "s)^" EscRegEx(RootPath) "(\\)?", "", $, 1)<br/>
}<br/>
<br/>
EscRegEx(trg) {<br/>
&nbsp;&nbsp;EscList := "\`n.`n*`n?`n+`n[`n]`n{`n}`n|`n(`n)`n^`n$"<br/>
&nbsp;&nbsp;Loop, Parse, EscList, `n<br/>
&nbsp;&nbsp;&nbsp;&nbsp;StringReplace, trg, trg, %A_LoopField%, \%A_LoopField%, 1<br/>
&nbsp;&nbsp;return, trg<br/>
}<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
SplashView(TextBuf, Timer = 3000) {<br/>
&nbsp;&nbsp;i := 0, MaxTextBufLen := 0<br/>
&nbsp;&nbsp;StringSplit, TextBuf, TextBuf, `n<br/>
&nbsp;&nbsp;loop, %TextBuf0%<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;i++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;TextBufLen := StrLen(TextBuf%i%)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if (MaxTextBufLen < TextBufLen)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MaxTextBufLen := TextBufLen<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;SplashTextOn, MaxTextBufLen * 12, TextBuf0 * 20, ,%TextBuf%<br/>
&nbsp;&nbsp;SetTimer, SplashClose, %Timer%<br/>
}<br/>
<br/>
SplashClose:<br/>
&nbsp;&nbsp;SetTimer, SplashClose, Off<br/>
&nbsp;&nbsp;SplashTextOff<br/>
return　下位フォルダをいじるスクリプトに流用できるから、無駄死にではないぞ。ま、負け惜しみじゃないんだからっ。　PCの突然死対策に、2分半に一度、autosave.winだけバックアップするようにしてみた。というか使うだけならバックアップするのこれだけでよさげ。
        ]]></content> 
  </entry>  
  <entry> 
    <title>AutoHotkey_Lで、Operaの起動と終了を便利にしてみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17827164/"/>  
    <id>http://poimono.exblog.jp/17827164/</id>  
    <issued>2012-04-15T18:28:00+09:00</issued>  
    <modified>2012-04-15T19:36:47+09:00</modified>  
    <created>2012-04-15T18:29:47+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　RamDiskを少しでも活用しようとOperaのキャッシュフォルダを配置して（速度向上は体感できなかったが、HDD寿命的に）満足してたのだが、TL眺めてたら「RamdiskにOpera置いたら爆速」とあって、試してみたら速度向上したので、RunOpera.ahkに組み込んでみた。　RamDisk起動機能を有効にすると、OperaをRamDiskにコピーして起動し、終了したら元のフォルダにコピーする。監視対象はRunOpera.ahkから起動したOperaのみ。Operaを起動させたままWindowsを終了した場合、Operaが終了するまで待機して元フォルダにコピーしてから終了する……ハズ。<br/>
　基本的な使い方は前回を参照。実は他にも地味に機能が増えてるが、普通に使う分には大差ないので省略。; --------- --------- --------- --------- ---------<br/>
; RunOpera.ahk<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
#WinActivateForce<br/>
<br/>
&nbsp;&nbsp;OperaPath := "C:\Program Files\Opera\Opera\"&nbsp;&nbsp;; Opera.exeの存在するパスを指定。末尾は"\"。<br/>
<br/>
&nbsp;&nbsp;SessionsPath := OperaPath "profile\sessions\"&nbsp;&nbsp;; セッションフォルダのフルパスを指定。末尾は"\"。<br/>
&nbsp;&nbsp;BookmarksPath := OperaPath "profile\bookmarks.adr"&nbsp;&nbsp;; bookmarks.adrのフルパスを指定。<br/>
<br/>
&nbsp;&nbsp;RamPath := "R:\Opera\"&nbsp;&nbsp;; RamDisk起動時に、Operaのコピー先となるフルパスを指定。末尾は"\"。<br/>
<br/>
&nbsp;&nbsp;TimeLimit := 30&nbsp;&nbsp;; 最終セッション退避確認ダイアログを自動でスキップするまでの秒数。<br/>
<br/>
&nbsp;&nbsp;AutoConvSW := 0&nbsp;&nbsp;; 最終セッションを退避させる場合、自動でブックマークに変換する設定。 0:変換しない。 1:変換する。<br/>
&nbsp;&nbsp;ACMoveSW := 1&nbsp;&nbsp;; 自動変換（↑）したセッションを隔離する設定。 0:隔離しない。 1:隔離する。<br/>
<br/>
&nbsp;&nbsp;HisReadSW := 0&nbsp;&nbsp;; タブ履歴（タブで表示したページの履歴）の設定。 0:最新のみ読み込む。 1:すべて読み込む。<br/>
&nbsp;&nbsp;WriteTrgSW := 0&nbsp;&nbsp;; ブックマーク情報を書き込む場所の設定。 0:セッションフォルダにテキストで保存。 1:bookmarks.adrに書き込む。<br/>
<br/>
&nbsp;&nbsp;RamCopySW := 0&nbsp;&nbsp;; RamDisk起動の設定。 0:通常起動。 1:コピーして起動し、終了したら書き戻す。<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; ※ RamDisk起動を利用する場合、Operaはスタンドアロン版であること。<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
&nbsp;&nbsp;IfNotExist, %SessionsPath%<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 16, , セッションフォルダが見つかりません。`n%SessionsPath%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;If (1 == WriteTrgSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;IfNotExist, %BookmarksPath%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 16, , bookmarks.adrが見つかりません。`n%BookmarksPath%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;IfExist, %SessionsPath%autosave.win<br/>
&nbsp;&nbsp;&nbsp;&nbsp;GoSub, SessionAnalyze<br/>
<br/>
;&nbsp;&nbsp;FileCopy, %OperaPath%ui\fastforward_backup.ini, %OperaPath%ui\fastforward.ini, 1&nbsp;&nbsp;; アップデートのたびにFastForward.iniが初期化される問題の対策。<br/>
<br/>
;&nbsp;&nbsp;FileCopy, %SessionsPath%autosave_RunOpBak.win, %SessionsPath%autosave_RunOpBak2.win, 1&nbsp;&nbsp;; ↓セッション退避etc.を実行しない時も念のため2世代バックアップ。<br/>
;&nbsp;&nbsp;FileCopy, %SessionsPath%autosave.win, %SessionsPath%autosave_RunOpBak.win, 1<br/>
<br/>
&nbsp;&nbsp;Process, WaitClose, opera.exe, 60&nbsp;&nbsp;; ↓終了させたはずのOperaがゾンビ化してないか確認。<br/>
&nbsp;&nbsp;if ErrorLevel {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 16, , Operaはすでに起動しています。<br/>
&nbsp;&nbsp;&nbsp;&nbsp;ExitApp<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;if RamCopySW {&nbsp;&nbsp;; RamCopySWが1なら<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileCopyDir, %OperaPath%, %RamPath%, 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;OnExit, ExitOp<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SetTimer, CheckOp, -1000<br/>
&nbsp;&nbsp;&nbsp;&nbsp;RunWait, %RamPath%opera.exe, , , OpPid<br/>
&nbsp;&nbsp;} else {&nbsp;&nbsp;; RamCopySWが0なら通常起動<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Run, %OperaPath%opera.exe, , , OpPid<br/>
&nbsp;&nbsp;&nbsp;&nbsp;gosub, CheckOp<br/>
&nbsp;&nbsp;}<br/>
<br/>
ExitApp<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
ExitOp:<br/>
&nbsp;&nbsp;Process, WaitClose, %OpPid%<br/>
&nbsp;&nbsp;FileCopyDir, %RamPath%, %OperaPath%, 1<br/>
ExitApp<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
CheckOp:<br/>
&nbsp;&nbsp;WinWait, ahk_pid %OpPid%, , 60<br/>
&nbsp;&nbsp;if !ErrorLevel {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;ifWinExist, Opera へようこそ ahk_pid %OpPid%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinActivate<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinWaitClose<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;} else {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;return<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;WinWait, パスワード ahk_pid %OpPid%, , 5<br/>
&nbsp;&nbsp;If ErrorLevel<br/>
&nbsp;&nbsp;&nbsp;&nbsp;return<br/>
<br/>
&nbsp;&nbsp;WinActivate<br/>
&nbsp;&nbsp;Sleep, 300<br/>
return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
SessionAnalyze:<br/>
&nbsp;&nbsp;FileRead, OSession, *P65001 *t %SessionsPath%autosave.win<br/>
&nbsp;&nbsp;If (0 != ErrorLevel) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 48, , Sessionの読み込みに失敗しました。`n%SessionsPath%autosave.win<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Return<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;Idx := 0<br/>
&nbsp;&nbsp;WinTitles := ""<br/>
&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Idx := RegExMatch(OSession, "\[(\d+)history url\].+?count=(.*?)\n", $, Idx + 1)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinNum := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisNum := $2 - 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := GetHisTitle(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinTitles := WinTitles "　" HisTitle "`n"<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;If("" == WinTitles)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Return<br/>
<br/>
&nbsp;&nbsp;SetTimer, RenewCount, 1000<br/>
&nbsp;&nbsp;MsgBox, 259, 退避確認（30秒後に通常起動）, 起動時に最終セッションを退避しますか？`n`n◆最終セッションの内容◆`n%WinTitles%, %TimeLimit%<br/>
&nbsp;&nbsp;SetTimer, RenewCount, Off<br/>
&nbsp;&nbsp;IfMsgBox, Yes<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;TimeNum := A_Now<br/>
&nbsp;&nbsp;&nbsp;&nbsp;BackupName := TimeNum ".win"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileMove, %SessionsPath%autosave.win, %SessionsPath%%BackupName%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If(0 == ErrorLevel)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BackupName := TimeNum "_" A_Index ".win"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (1 == AutoConvSW)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GoSub, SessionConvert<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;IfMsgBox, Cancel<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
<br/>
Return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
RenewCount:<br/>
&nbsp;&nbsp;IfWinExist, 退避確認（ ahk_class #32770<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;TimeLimit--<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinSetTitle, 退避確認（%TimeLimit%秒後に通常起動）<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if !TimeLimit<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetTimer, RenewCount, Off<br/>
&nbsp;&nbsp;}<br/>
return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
SessionConvert:<br/>
&nbsp;&nbsp;If (1 == WriteTrgSW)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileCopy, %BookmarksPath%, %BookmarksPath%_%A_Now%<br/>
<br/>
&nbsp;&nbsp;CmdLine := SessionsPath BackupName<br/>
&nbsp;&nbsp;SplitPath, CmdLine, , , , SessionName<br/>
&nbsp;&nbsp;Result := "#FOLDER`n&nbsp;&nbsp;NAME=[Session] " SessionName "`n`n"<br/>
&nbsp;&nbsp;ResultBuf := Result<br/>
<br/>
&nbsp;&nbsp;Idx := 0<br/>
&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Idx := RegExMatch(OSession, "\[(\d+)history url\].+?count=(.*?)\n", $, Idx + 1)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinNum := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisNum := $2 - 1<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := GetHisTitle(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := GetHisUrl(OSession, WinNum, HisNum, Idx)<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == HisReadSW) {&nbsp;&nbsp;; タブ履歴を無視する場合<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "%uRL`n&nbsp;&nbsp;NAME=" HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;StringLen, HisNumLen, HisNum<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == HisNum) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "%uRL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#FOLDER`n&nbsp;&nbsp;NAME=" HisTitle "`n`n%uRL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop, %HisNum% {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisNum--<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := GetHisTitle(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := GetHisUrl(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "%uRL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Result .= "-`n`n"<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;If (ResultBuf == Result)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Return<br/>
&nbsp;&nbsp;Result .= "-`n`n"<br/>
<br/>
&nbsp;&nbsp;If (1 == WriteTrgSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileAppend, %Result%, %BookmarksPath%, CP65001<br/>
&nbsp;&nbsp;} Else {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileDelete, %CmdLine%.txt<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileAppend, %Result%, %CmdLine%.txt, CP65001<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;If (1 == ACMoveSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;IfNotExist, %SessionsPath%AutoConv\<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileCreateDir, %SessionsPath%AutoConv\<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileMove, %CmdLine%, %SessionsPath%AutoConv\%BackupName%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 != ErrorLevel)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 48, , 変換済みセッションの移動に失敗しました。`n%SessionsPath%AutoConv\<br/>
&nbsp;&nbsp;}<br/>
Return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
GetHisTitle(ByRef OSession, WinNum, HisNum, Idx){<br/>
&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history title\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;Return $1<br/>
}<br/>
<br/>
GetHisUrl(ByRef OSession, WinNum, HisNum, Idx){<br/>
&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history url\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;Return $1<br/>
}<br/>
<br/>
ZeroSupply(Num, Digit){<br/>
&nbsp;&nbsp;StringLen, NumLen, Num<br/>
&nbsp;&nbsp;LoopNum := Digit - NumLen<br/>
&nbsp;&nbsp;Loop, %LoopNum%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Num := "0" Num<br/>
&nbsp;&nbsp;Return, Num<br/>
}　ひょっとしたら、タイミングによってはコピーが不完全なんてことも、ないとは言い切れないので、注意。　RamDisk全体をバックアップ/レストアするだけでよくね？という正論は受け付けてません＞＜
        ]]></content> 
  </entry>  
  <entry> 
    <title>auのJAVA対応ケータイにOpera Miniを入れてみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17783189/"/>  
    <id>http://poimono.exblog.jp/17783189/</id>  
    <issued>2012-04-06T21:21:00+09:00</issued>  
    <modified>2012-04-06T21:31:58+09:00</modified>  
    <created>2012-04-06T21:23:01+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　auのオープンアプリ/Ezアプリ（J）対応機種でOpera Miniを使う方法の備忘録。公式訪れるだけじゃ入れられないとか、そのままじゃQVGAで見難く醜いとか、入れても通信エラーが多発するといった、いくつかある壁の解決方法。Opera Miniに限らず、野良アプリのインストールに応用できる。<br/>
　Opera Miniの魅力は改めて説明するまでもないので割愛。知らない人は公式サイトに行ってみよう！Opera Miniの準備　まず、OperaのOpera Mini & Opera MobileからOpera Miniをダウンロード。対象環境がカッコ書きされていないものがJ2ME版。今回は「Opera Mini 6.5」を選択し、言語選択で「日本語」を選んでからjadとjarを保存する。　次に、jadの編集。といっても、テキストエディタで開きOAP-Screen-Size: WVGAと書き加えるだけ。機種がWVGA非対応の場合は適当に。詳しくは、auの公式資料（後述）を参照。なお、公式資料には「jadはUTF-8」とあるが、おそらく罠。s-jisでないと失敗した。Opera Miniの公開　次に、用意したjad jarをwebで公開する。jad対応アップローダーを利用する手もあるが、今回は04WebServerでサーバーを立てた。04WSは、個人用途であれば十二分。<br/>
　設定は適当に。MIMEタイプの設定だけは必須。「サーバ設定 ＞ MIMEタイプの設定」を開き、text/vnd.sun.j2me.app-descriptorjad、application/Java-archivejarの二行を加える。コメントに「右がMIME、左が拡張子」とあるがこれは誤り。<br/>
　次に、htmlを用意してjadへのリンクを張る。リンクは&lt;a href="device:jam?http://example.com/opera-mini-6.5.26955-advanced-ja.jad"&gt;Opera Mini&lt;/a&gt;のような書式で、jadへの絶対パスを書く。パスも適当に。Opera Miniのインストール　次に、ケータイの標準ブラウザ（not PCSV）でこのリンクを踏み、インストールを行う。これまでの作業に問題がなければインストールは完了する。　最後に、Opera Mini上で「メニューキー > Oメニュー > 設定」を開いて設定を行う。オープンアプリ/Ezアプリ（J）は「同時接続数は1」という制限があるので、Opera Linkは基本的に使えない。また、「Socket非対応」なので「詳細設定」からプロトコルを「http」のみにしておく（しなくても自動で判断するが）。　一応、簡単な使い方を説明しておくと、Opera Miniは方向キーでカーソルを動かす他に、「8462キーで大きく移動」「5で拡大」、「#や*に続けていずれかのキーでショートカット」という操作がある。ショートカットについては「メニューキー > Oメニュー > ヘルプ > ショートカット」から確認可能。　適切な解像度で運用するOpera Miniの美しく、便利なことよ。まさにOpera最強現実！　はじめ、接続エラーが多発して困ってたのだが、同時接続数1なのにOpera Linkが接続してるのが原因の模様。どうしてもOL使いたい人は、OLが同期してる間は我慢するしかない。　ちなみに、アプリはSDカードからインストールも可能なのだが（PRIVATE/AU_INOUT/OAP/にjad jarを配置し、「Ezアプリ設定 > SD内アプリ一覧」）、Operaは上手くいかんかった。成功するアプリもあるが、差がわからん。OAP-Backupあたりが関係してる？KDDI au: 技術情報 > EZアプリ(J)
        ]]></content> 
  </entry>  
  <entry> 
    <title>AutoHotKeyで、X-アプリ for LISMOをちょっと便利にしてみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17732931/"/>  
    <id>http://poimono.exblog.jp/17732931/</id>  
    <issued>2012-03-27T20:21:45+09:00</issued>  
    <modified>2012-03-27T20:23:04+09:00</modified>  
    <created>2012-03-27T20:23:04+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　ウォークマンやauケータイの転送ソフトであるX-アプリで、ファイルをドロップするたびに「取り込み完了」とモーダルダイアログが出るのが邪魔だったので、監視してOKを押すだけのAHKスクリプト。;----------------------------------------------------------------------------------------<br/>
; LismoCheck.ahk<br/>
;----------------------------------------------------------------------------------------<br/>
<br/>
&nbsp;&nbsp;SetTimer, LismoCheck, 1000<br/>
&nbsp;&nbsp;MsgBox, Lismo監視中`n`nOKを押すと終了<br/>
&nbsp;&nbsp;ExitApp<br/>
<br/>
LismoCheck:<br/>
&nbsp;&nbsp;IfWinExist,&nbsp;&nbsp;x-アプリ for LISMO ahk_class #32770<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinGetText, WinTxt<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if ("OK`r`nファイルの取り込みが終了しました。`r`n" == WinTxt) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ControlClick, Button1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinTxt := ""<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
return　これがフリーソフトなら、設定で変えられそうな機能なんだがなあ。見逃してるのかなぁ……。
        ]]></content> 
  </entry>  
  <entry> 
    <title>AutoHotKeyで、Windowsデスクトップガジェットを一時非表示にできるようにしてみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17651963/"/>  
    <id>http://poimono.exblog.jp/17651963/</id>  
    <issued>2012-03-12T21:44:00+09:00</issued>  
    <modified>2012-03-15T14:05:02+09:00</modified>  
    <created>2012-03-12T21:45:56+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　Windows7では自由に配置できるようになったデスクトップガジェットだが、操作の邪魔になる状況もちらほら。最前面にして常時表示しておきたいんだけど、それだとガジェットで隠れて操作できない――みたいな。<br/>
　というわけで、マウスカーソルがデスクトップガジェットにホバーしている間だけ、デスクトップガジェットを非表示にするAHKスクリプト。――標準でついてるべき機能なんじゃねーの！？;////////////////////////////////////////////////////////////////////////////////<br/>
;<br/>
; WindowsDesktopGadgetAvoid.ahk ver.1.0.3<br/>
;<br/>
;////////////////////////////////////////////////////////////////////////////////<br/>
<br/>
&nbsp;&nbsp;CoordMode, Mouse, Screen<br/>
&nbsp;&nbsp;SetTimer, WGadgetCheck, 500<br/>
<br/>
$#g::<br/>
&nbsp;&nbsp;SetTimer, WGadgetCheck, Off<br/>
&nbsp;&nbsp;SetTimer, WGadgetRestore, Off<br/>
&nbsp;&nbsp;GroupAdd, WGadget, ahk_class SideBar_HTMLHostWindow<br/>
&nbsp;&nbsp;WinShow, ahk_group WGadget<br/>
&nbsp;&nbsp;Send, #g<br/>
&nbsp;&nbsp;Sleep, 3000<br/>
&nbsp;&nbsp;Reload<br/>
return<br/>
<br/>
WGadgetCheck:<br/>
&nbsp;&nbsp;MouseGetPos, mX, mY, mHWND<br/>
&nbsp;&nbsp;WinGetClass, mClass, ahk_id %mHWND%<br/>
&nbsp;&nbsp;if ("SideBar_HTMLHostWindow" == mClass) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WG_Num := 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinGet, WG_HWND, ID, ahk_class BasicWindow<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ("" == WG_HWND)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinGetPos, wX, wY, wW, wH, ahk_id %WG_HWND%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (0 < wW) && (0 < wH) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GroupAdd, WGadget, ahk_id %WG_HWND%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinHide, ahk_id %WG_HWND%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Win%WG_Num%X := wX, Win%WG_Num%Y := wY, Win%WG_Num%X2 := wX + wW, Win%WG_Num%Y2 := wY + wH<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WG_Num++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SetTimer, WGadgetRestore, 2000<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SetTimer, WGadgetCheck, Off<br/>
&nbsp;&nbsp;}<br/>
return<br/>
<br/>
WGadgetRestore:<br/>
&nbsp;&nbsp;MouseGetPos, mX, mY<br/>
&nbsp;&nbsp;WG_Hover := 0<br/>
&nbsp;&nbsp;Loop, %WG_Num% {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;wX := Win%A_Index%X<br/>
&nbsp;&nbsp;&nbsp;&nbsp;wX2 := Win%A_Index%X2<br/>
&nbsp;&nbsp;&nbsp;&nbsp;wY := Win%A_Index%Y<br/>
&nbsp;&nbsp;&nbsp;&nbsp;wY2 := Win%A_Index%Y2<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if (wX <= mX) && (mX <= wX2) && (wY <= mY) && (mY <= wY2) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WG_Hover := 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;if !WG_Hover {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinShow, ahk_group WGadget<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SetTimer, WGadgetCheck, 500<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SetTimer, WGadgetRestore, Off<br/>
&nbsp;&nbsp;}<br/>
return　影のあるガジェット（標準の「時計」など）は影が残ったりするけど実用上問題ないので仕様。<br/>
　よく見たらクラス名ついてたので対応。　デスクトップガジェットをマウスで操作したい場合、タスクトレイからスクリプトを停止させるか、Win+Gで3秒ほど停止するのでその間に。　Win+Gってのは、ガジェットをアクティブにする標準のホットキーなので、「最前面にある必要はないけどたまに見たい」って人は活用すべし。たとえばMG2.ahkで、カーソルを画面端に移動させるとWin+G出すようにするなど。
        ]]></content> 
  </entry>  
  <entry>
    <title type="text"><![CDATA[PR: DO.NEXT＞BATON TO FRIENDS]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/AJ8xZIApe5QM?type=2&amp;ent=4fa3bcacb4520c2073491719c4b89236"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/AJ8xZIApe5QM?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/aY8M_dpUWt7G/AJ8xZIApe5QM?type=3&ent=4fa3bcacb4520c2073491719c4b89236"/></a></td></tr><tr><td align="left" valign="top" > ＜次への一歩＞を見つけよう！★無限ネットワークからキミ自身の可能性を診断！ </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2012-03-12T21:45:56+09:00</created>
    <modified>2012-03-15T14:05:02+09:00</modified>
    <issued>2012-03-12T21:44:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>4fa3bcacb4520c2073491719c4b89236</id>
  </entry>
  <entry> 
    <title>AutoHotkey_Lで、Operaの起動を便利にしてみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17431146/"/>  
    <id>http://poimono.exblog.jp/17431146/</id>  
    <issued>2012-02-09T19:25:00+09:00</issued>  
    <modified>2012-02-20T11:56:07+09:00</modified>  
    <created>2012-02-09T19:26:37+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　以前書いたOpera用AHKスクリプトの「起動時に最終セッションを退避」に「セッションをブックマークに変換」を合わせてみた。あと細かいミスも修正。　このスクリプトを実行すると、Operaの最終（前回終了時の）セッションのタイトル一覧が表示され、セッションを退避するか問われる。YESにすると、セッションを現在日時で変名し、空のOperaが起動する。また、退避する場合、自動でセッションの内容をブックマークに変換することも可能。<br/>
　「前回、大量にタブ開いたまま終了したから起動がおっくうだなー」とか「最終セッション全部は必要ないなー」という場合に便利。自動変換に興味ない旧runOpera.ahkユーザーも、文字化けがなくなったので更新する価値はある、ような。　使うには、以下のコードを適当に保存し、「SessionsPath」と「BookmarksPath」を埋めれば、最低限OK。初期設定ではセッションは自動変換されないし、bookmarks.adrへの書き込みも行われないので、安全を確認してから好みの設定にするよろし。<br/>
　書くべきパスはopera:about参照のこと。SessionsPathはファイル名いらないので注意。　パスの確認を最初に行うように変更。失敗しても実害ないし、そもパス間違えるやつなんていないだろHAHAHA、と思っていたら、試験で存在しないパス入れたままなのを忘れてｒｙ; --------- --------- --------- --------- ---------<br/>
; RunOpera.ahk<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
#WinActivateForce<br/>
<br/>
&nbsp;&nbsp;SessionsPath := ""&nbsp;&nbsp;; セッションフォルダのフルパスを指定。末尾は"\"。<br/>
&nbsp;&nbsp;BookmarksPath := ""&nbsp;&nbsp;; bookmarks.adrのフルパスを指定。<br/>
<br/>
&nbsp;&nbsp;AutoConvSW := 0&nbsp;&nbsp;; 最終セッションを退避させる場合、自動でブックマークに変換する設定。 0:変換しない。 1:変換する。<br/>
&nbsp;&nbsp;ACMoveSW := 1&nbsp;&nbsp;; 自動変換（↑）したセッションを隔離する設定。 0:隔離しない。 1:隔離する。<br/>
<br/>
&nbsp;&nbsp;HisReadSW := 0&nbsp;&nbsp;; タブ履歴（タブで表示したページの履歴）の設定。 0:最新のみ読み込む。 1:すべて読み込む。<br/>
&nbsp;&nbsp;WriteTrgSW := 0&nbsp;&nbsp;; ブックマーク情報を書き込む場所の設定。 0:セッションフォルダにテキストで保存。 1:bookmarks.adrに書き込む。<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
&nbsp;&nbsp;IfNotExist, %SessionsPath%<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 48, セッションフォルダが見つかりません。`n%SessionsPath%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;If (1 == WriteTrgSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;IfNotExist, %BookmarksPath%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 48, bookmarks.adrが見つかりません。`n%BookmarksPath%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;IfExist, %SessionsPath%autosave.win<br/>
&nbsp;&nbsp;&nbsp;&nbsp;GoSub, SessionAnalyze<br/>
<br/>
&nbsp;&nbsp;Run, C:\Program Files\Opera\Opera\opera.exe, , , OpPid<br/>
&nbsp;&nbsp;OpTitle := "パスワード"<br/>
&nbsp;&nbsp;WinWait, %OpTitle% ahk_pid %OpPid%, , 60<br/>
&nbsp;&nbsp;If(0 != ErrorLevel)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;WinActivate<br/>
&nbsp;&nbsp;Sleep, 500<br/>
Exit<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
SessionAnalyze:<br/>
&nbsp;&nbsp;FileRead, OSession, *P65001 *t %SessionsPath%autosave.win<br/>
&nbsp;&nbsp;If (0 != ErrorLevel) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 48, Sessionの読み込みに失敗しました。`n%SessionsPath%autosave.win<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Return<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;Idx := 0<br/>
&nbsp;&nbsp;WinTitles := ""<br/>
&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Idx := RegExMatch(OSession, "\[(\d+)history url\].+?count=(.*?)\n", $, Idx + 1)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinNum := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisNum := $2 - 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := GetHisTitle(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinTitles := WinTitles "　" HisTitle "`n"<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;If("" == WinTitles)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Return<br/>
<br/>
&nbsp;&nbsp;MsgBox, 259, 30秒後に通常起動します。, 起動時に最終セッションを退避しますか？`n`n◆最終セッションの内容◆`n%WinTitles%, 30<br/>
&nbsp;&nbsp;IfMsgBox, Yes<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;TimeNum := A_Now<br/>
&nbsp;&nbsp;&nbsp;&nbsp;BackupName := TimeNum ".win"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileMove, %SessionsPath%autosave.win, %SessionsPath%%BackupName%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If(0 == ErrorLevel)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BackupName := TimeNum "_" A_Index ".win"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (1 == AutoConvSW)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GoSub, SessionConvert<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;IfMsgBox, Cancel<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
Return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
SessionConvert:<br/>
&nbsp;&nbsp;If (1 == WriteTrgSW)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileCopy, %BookmarksPath%, %BookmarksPath%_%A_Now%<br/>
<br/>
&nbsp;&nbsp;CmdLine := SessionsPath BackupName<br/>
&nbsp;&nbsp;SplitPath, CmdLine, , , , SessionName<br/>
&nbsp;&nbsp;Result := "#FOLDER`n&nbsp;&nbsp;NAME=[Session] " SessionName "`n`n"<br/>
&nbsp;&nbsp;ResultBuf := Result<br/>
<br/>
&nbsp;&nbsp;Idx := 0<br/>
&nbsp;&nbsp;Loop {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Idx := RegExMatch(OSession, "\[(\d+)history url\].+?count=(.*?)\n", $, Idx + 1)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinNum := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisNum := $2 - 1<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := GetHisTitle(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := GetHisUrl(OSession, WinNum, HisNum, Idx)<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == HisReadSW) {&nbsp;&nbsp;; タブ履歴を無視する場合<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#URL`n&nbsp;&nbsp;NAME=" HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;StringLen, HisNumLen, HisNum<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 == HisNum) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#URL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#FOLDER`n&nbsp;&nbsp;NAME=" HisTitle "`n`n#URL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop, %HisNum% {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisNum--<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := GetHisTitle(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := GetHisUrl(OSession, WinNum, HisNum, Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#URL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Result .= "-`n`n"<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;If (ResultBuf == Result)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Return<br/>
&nbsp;&nbsp;Result .= "-`n`n"<br/>
<br/>
&nbsp;&nbsp;If (1 == WriteTrgSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileAppend, %Result%, %BookmarksPath%, CP65001<br/>
&nbsp;&nbsp;} Else {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileDelete, %CmdLine%.txt<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileAppend, %Result%, %CmdLine%.txt, CP65001<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;If (1 == ACMoveSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;IfNotExist, %SessionsPath%AutoConv\<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileCreateDir, %SessionsPath%AutoConv\<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileMove, %CmdLine%, %SessionsPath%AutoConv\%BackupName%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (0 != ErrorLevel)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, 48, 変換済みセッションの移動に失敗しました。`n%SessionsPath%AutoConv\<br/>
&nbsp;&nbsp;}<br/>
Return<br/>
<br/>
; --------- --------- --------- --------- ---------<br/>
<br/>
GetHisTitle(ByRef OSession, WinNum, HisNum, Idx){<br/>
&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history title\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;Return $1<br/>
}<br/>
<br/>
GetHisUrl(ByRef OSession, WinNum, HisNum, Idx){<br/>
&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history url\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;Return $1<br/>
}<br/>
<br/>
ZeroSupply(Num, Digit){<br/>
&nbsp;&nbsp;StringLen, NumLen, Num<br/>
&nbsp;&nbsp;LoopNum := Digit - NumLen<br/>
&nbsp;&nbsp;Loop, %LoopNum%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Num := "0" Num<br/>
&nbsp;&nbsp;Return, Num<br/>
}　余談だが、SnakeCaseもPascalCaseもCamelCaseもしっくりこなくて困る。いやPascalCaseでおおむね問題ないのだが、ifとかloopとかreturnみたいな単語が大文字だと違和感が。慣れか。
        ]]></content> 
  </entry>  
  <entry> 
    <title>AutoHotKeyで「音量ミキサー」を呼び出して最大化してみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17377674/"/>  
    <id>http://poimono.exblog.jp/17377674/</id>  
    <issued>2012-01-31T17:57:00+09:00</issued>  
    <modified>2012-03-14T22:53:55+09:00</modified>  
    <created>2012-01-31T17:58:14+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　WindowsVista以降、アプリケーションごとに音量を指定できるようになり、それにあわせてボリュームコントロールも「音量ミキサー」として生まれ変わったのだが、これが実に使いにくい。開いた直後は3つのアプリケーションしか表示できない程度の大きさで、しかもウィンドウを広げても記憶しない。　まあ要するにウィンドウサイズいじるのを自動化すればいいだけなので、AHKでやってみた。#V::<br/>
&nbsp;&nbsp;run, SndVol.exe<br/>
&nbsp;&nbsp;winWait, 音量ミキサー, , 10<br/>
&nbsp;&nbsp;if (1 == errorLevel)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;return<br/>
&nbsp;&nbsp;winGetPos, , , , WH<br/>
&nbsp;&nbsp;winMove, , , 0, A_ScreenHeight - WH, A_ScreenWidth<br/>
return　スクリプト呼び出すなり、ホットキー割り当てるなり、適当に。　話は変わるが、音量ミキサーの最大の問題は、ボリューム指定の方法。ボリュームには大きく分けて音声デバイスのボリュームと、アプリケーション毎のボリュームがあって、例えばデバイスを増減させた時はアプリケーションの方は割合で増減する（デバイスを100→50にした時、appAは100→50、appBは50→25）。一方、アプリケーションをデバイスより上げると、デバイスも一緒に上がるが、ほかのアプリケーションのボリュームはそのまま。なにこれ。<br/>
　こんなややこしい挙動にするなら、アプリケーションのボリュームの方は最初から「現状の音量に対する割合」にすればよかったのに。
        ]]></content> 
  </entry>  
  <entry> 
    <title>AutoHotKey_Lで、Operaのセッションをブックマークに書き込んでみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17301796/"/>  
    <id>http://poimono.exblog.jp/17301796/</id>  
    <issued>2012-01-10T20:32:00+09:00</issued>  
    <modified>2012-02-09T00:04:45+09:00</modified>  
    <created>2012-01-10T20:33:13+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　Operaのセッションを解析してブックマークに書き込むスクリプト。bookmarks.adrの仕様が不明瞭だったので、とりあえずテキストに書き出したのが前回。だがつい先日、実は最低限必要なのはNAMEとURLだけ（他はOperaの起動時に補完される）と知り、さっそくやってみた。　以下のスクリプトを適当に保存し、"bookmarks.adr"のフルパスを書き込んだら準備完了。あとはセッションファイルを引数にして呼び出す（ドロップ可。複数ファイル対応）と、ブックマークに変換される。その後、Operaを起動すると数秒ののち、"[Session] セッションファイル名"というフォルダにセッションの内容が！　ちょっといじって、スクリプト冒頭で挙動設定を可能にしてみた。デフォルトだと「タブ履歴無視」「プレーンテキストで保存」なので、いじってみるよろし。bookmarks.adrの指定も忘れないように。; -------- --------- --------- --------- ---------<br/>
; OperaSession2Bookmarks.ahk<br/>
; -------- --------- --------- --------- ---------<br/>
&nbsp;&nbsp;BookmarksPath := "C:\Program Files\Opera Next\profile\bookmarks.adr"&nbsp;&nbsp;; bookmarks.adrのフルパスを指定。<br/>
&nbsp;&nbsp;HisSW := 0&nbsp;&nbsp;; タブの履歴（そのタブで表示したページの履歴）をどうするかの設定。 0:最後に表示したアドレスのみ読み込む。 1:すべて読み込む。<br/>
&nbsp;&nbsp;WriteSW := 0&nbsp;&nbsp;; 書き込み先の設定。 0:セッションと同じ位置にプレーンテキストで保存。 1:bookmarks.adrに書き込む。<br/>
<br/>
&nbsp;&nbsp;If (1 == WriteSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;IfNotExist, %BookmarksPath%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, %BookmarksPath%が見つかりません。<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileCopy, %BookmarksPath%, %BookmarksPath%_%A_Now%<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;Loop, %0%<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;CmdLineBuf := %A_Index%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop %CmdLineBuf%, 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CmdLine := A_LoopFileLongPath<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileRead, OSession, *P65001 *t %CmdLine%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (ErrorLevel) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox, Session File Read Error<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SplitPath, CmdLine, , , , SessionName<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Result := "#FOLDER`n&nbsp;&nbsp;NAME=[Session] " SessionName "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Header := Result<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Idx := 0<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Idx := RegExMatch(OSession, "\[(\d+)history url\].+?count=(.*?)\n", $, idx + 1)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (0 == Idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinNum := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisNum := $2 - 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLen, HisNumLen, HisNum<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history title\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history url\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := $1<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (0 == HisSW) {&nbsp;&nbsp;; タブ履歴を無視する場合<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#URL`n&nbsp;&nbsp;NAME=" HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If (0 == HisNum) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#URL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#FOLDER`n&nbsp;&nbsp;NAME=" HisTitle "`n`n#URL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Loop, %HisNum%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisNum--<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history title\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history url\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "#URL`n&nbsp;&nbsp;NAME=[" ZeroSupply(HisNum, HisNumLen) "] " HisTitle "`n&nbsp;&nbsp;URL=" HisUrl "`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result .= "-`n`n"<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (Header == Result)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Result .= "-`n`n"<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;If (1 == WriteSW) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileAppend, %Result%, %BookmarksPath%, CP65001&nbsp;&nbsp;; bookmarks.adrに直接書き込む<br/>
&nbsp;&nbsp;&nbsp;&nbsp;} Else {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileDelete, %CmdLine%.txt&nbsp;&nbsp;; ↓のファイルがすでに存在していたら削除（やらないと追記）<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileAppend, %Result%, %CmdLine%.txt, CP65001&nbsp;&nbsp;; セッションと同じ位置に書き出す<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;MsgBox, Finish!<br/>
Return<br/>
<br/>
ZeroSupply(Num, Digit){<br/>
&nbsp;&nbsp;StringLen, NumLen, Num<br/>
&nbsp;&nbsp;LoopNum := Digit - NumLen<br/>
&nbsp;&nbsp;Loop, %LoopNum%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Num := "0" Num<br/>
&nbsp;&nbsp;Return, Num<br/>
}　これで大量のタブを気軽に記録できる。あと、OperaLinkでセッション（だったもの）が共有できる副作用も。<br/>
　まさにすべてのOpera-erへの福音（えー。
        ]]></content> 
  </entry>  
  <entry> 
    <title>MouseGesture.ahkでウィンドウ操作メニュー表示してみた。2</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17301328/"/>  
    <id>http://poimono.exblog.jp/17301328/</id>  
    <issued>2012-01-10T18:03:00+09:00</issued>  
    <modified>2012-01-11T20:19:31+09:00</modified>  
    <created>2012-01-10T18:04:23+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　リリース直後に即更新。前回のは実はα版だったんだよ！！！　Ω ΩΩ {後付け乙。　というわけで、ウィンドウ操作メニューを表示するMouseGesture2用スクリプトver.1.0.1。変更点メニュー呼び出しを「タイトルバー右側のボタンを右クリック」で行うように変更。操作対象をアクティブウィンドウではなく、右クリックしたウィンドウに変更。入れ忘れてた最前面固定を追加。　まず、ソース内のコメントに従い以下のスクリプトを導入。3箇所あるので注意。; -------- --------- --------- --------- --------- <br/>
; 以下を"MG_User.ahk"の初期化処理セクションに追加。<br/>
; -------- --------- --------- --------- --------- <br/>
<br/>
MenuId_Max := 0, ItemId := 0, HieLv := 0<br/>
MenuId_Cur := "WH" MenuId_Max<br/>
Menu, WH0, Add, 最前面, WH_Topmost<br/>
Menu, WH0, Add<br/>
Loop,Read, WinHack.txt<br/>
{<br/>
&nbsp;&nbsp;RegExMatch(A_LoopReadLine, "^\s?([\[\]\;]|----)?\s?([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)", $)<br/>
&nbsp;&nbsp;if(";" == $1)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;ItemId++<br/>
&nbsp;&nbsp;if("[" == $1) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MenuId_HL%HieLv% := MenuId_Cur<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Max++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Cur := "WH" MenuId_Max<br/>
&nbsp;&nbsp;&nbsp;&nbsp;%MenuId_Cur%_Text := $2<br/>
&nbsp;&nbsp;&nbsp;&nbsp;ItemId_HL%HieLv% := ItemId<br/>
&nbsp;&nbsp;&nbsp;&nbsp;ItemId := 0<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HieLv++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;if("]" == $1) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;HieLv--<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MenuId_HLUpp := MenuId_HL%HieLv%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Cur_Text := %MenuId_Cur%_Text<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Menu, %MenuId_HLUpp%, Add, %MenuId_Cur_Text%, :%MenuId_Cur%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Cur := MenuId_HLUpp<br/>
&nbsp;&nbsp;&nbsp;&nbsp;ItemId := ItemId_HL%HieLv%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;WM_X%MenuId_Cur%_%ItemId% := $3<br/>
&nbsp;&nbsp;WM_Y%MenuId_Cur%_%ItemId% := $4<br/>
&nbsp;&nbsp;WM_W%MenuId_Cur%_%ItemId% := $5<br/>
&nbsp;&nbsp;WM_H%MenuId_Cur%_%ItemId% := $6<br/>
&nbsp;&nbsp;Menu, %MenuId_Cur%, Add, %$2%, WH_WM<br/>
}<br/>
Menu, WH0, Add<br/>
Menu, WH_WK, Add, 実行, WH_WK<br/>
Menu, WH_Etc, Add, 強制終了, :WH_WK<br/>
Menu, WH_Etc, Add, プログラムのフォルダを開く(&O), WH_AppDirOpen<br/>
Menu, WH_Etc, Add<br/>
Menu, WH_Etc, Add, WinHack.txtを開く, WH_SettingOpen<br/>
Menu, WH0, Add, その他, :WH_Etc<br/>
<br/>
<br/>
; -------- --------- --------- --------- --------- <br/>
; 以下を"MG_User.ahk"のサブルーチン定義セクションに追加。<br/>
; -------- --------- --------- --------- --------- <br/>
<br/>
WH_Show:<br/>
&nbsp;&nbsp;WinGet, state, ExStyle, ahk_id %MG_HWND%<br/>
&nbsp;&nbsp;If ((0x00000008 & state) != 0)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Menu, WH0, Check, 最前面<br/>
&nbsp;&nbsp;else<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Menu, WH0, UnCheck, 最前面<br/>
&nbsp;&nbsp;Menu, WH0, Show<br/>
return<br/>
<br/>
WH_Topmost:<br/>
&nbsp;&nbsp;WinSet, Topmost, TOGGLE, ahk_id %MG_HWND%<br/>
return<br/>
<br/>
WH_WM:<br/>
&nbsp;&nbsp;WM_X := WM_X%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WM_Y := WM_Y%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WM_W := WM_W%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WM_H := WM_H%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WinMove, ahk_id %MG_HWND%, , %WM_X%, %WM_Y%, %WM_W%, %WM_H%<br/>
return<br/>
<br/>
WH_WK:<br/>
&nbsp;&nbsp;WinKill, ahk_id %MG_HWND%<br/>
return<br/>
<br/>
WH_AppDirOpen:<br/>
&nbsp;&nbsp;wmi := ComObjGet("winmgmts:")<br/>
&nbsp;&nbsp;queryEnum := wmi.ExecQuery(""<br/>
&nbsp;&nbsp;&nbsp;&nbsp;. "Select * from Win32_Process where ProcessId=" . MG_PID)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;._NewEnum()<br/>
&nbsp;&nbsp;if queryEnum[process] {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(process.CommandLine, """?([^""]+|[^\s]+)""?", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SplitPath, $1, , AppDir<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Run, explore %AppDir%<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;wmi := queryEnum := process := ""<br/>
return<br/>
<br/>
WH_SettingOpen:<br/>
&nbsp;&nbsp;Run, WinHack.txt<br/>
return<br/>
<br/>
<br/>
; -------- --------- --------- --------- --------- <br/>
; 以下をMouseGesture2にインポート<br/>
; -------- --------- --------- --------- --------- <br/>
<br/>
[TitleBarButton]<br/>
Custom=MG_HitTest()="MinButton"<br/>
Custom=MG_HitTest()="MaxButton"<br/>
Custom=MG_HitTest()="CloseButton"<br/>
<br/>
[RB__]<br/>
G=RB__<br/>
TitleBarButton=GoSub,WH_Show　[TitleBarButton]、右側ボタンだけだと右側見えてない時に無力なので、「タイトルバーのアイコン」とか「枠」「リサイズ可能な枠」あたりも追加した方がよさげ。ただし「ヘルプボタン」はOperaで誤爆するのでお勧めできない　次に、"MouseGesture.ahk"と同じ位置に"WinHack.txt"を作成し、ウィンドウ移動・サイズ変更設定を書き込む。書式は以下を参考に。; -------- --------- --------- --------- --------- <br/>
; 書式は以下の通り。<br/>
; <br/>
; ・"["と"]"でサブメニュー化。ネストも可。<br/>
; ・"メニュー項目名, X, Y, Width, Height"でウィンドウ移動・サイズ変更項目を作成可能。<br/>
; ・";"で始まる行はコメント行。<br/>
; ・上の書式に沿わない行（空改行も含む）はセパレータになる。<br/>
; -------- --------- --------- --------- --------- <br/>
<br/>
[移動 (&I)<br/>
&nbsp;&nbsp;基準座標に戻す (&W), 0, 0<br/>
&nbsp;&nbsp;タスクバーを避ける, 165, , , <br/>
&nbsp;&nbsp;----<br/>
&nbsp;&nbsp;左656, 0, 0, 656 ,1050<br/>
&nbsp;&nbsp;右1024, 656, 0, 1024 ,1050<br/>
&nbsp;&nbsp;右1024, 656, 0, 1024 ,1050<br/>
&nbsp;&nbsp;----<br/>
&nbsp;&nbsp;左1024, 0, 0, 1024 ,1050<br/>
&nbsp;&nbsp;右656, 1024, 0, 656 ,1050<br/>
]<br/>
[リサイズ (&R)<br/>
&nbsp;&nbsp;850*635, , ,850 ,635<br/>
&nbsp;&nbsp;1130*850, , ,1130 ,850<br/>
&nbsp;&nbsp;----<br/>
;&nbsp;&nbsp;800*600, , ,800 ,600<br/>
&nbsp;&nbsp;1024*768, , ,1024 ,768<br/>
&nbsp;&nbsp;1280*1024, , ,1280 ,1024<br/>
]
        ]]></content> 
  </entry>  
  <entry> 
    <title>MouseGesture.ahkでウィンドウ操作メニュー表示してみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17297787/"/>  
    <id>http://poimono.exblog.jp/17297787/</id>  
    <issued>2012-01-09T19:00:00+09:00</issued>  
    <modified>2012-01-10T18:17:12+09:00</modified>  
    <created>2012-01-09T19:01:56+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　Windows7環境で古いmenuHackerがソフトを巻き込んで落ちるので困っていたのだが、よく考えたら独自コマンドの表示さえできればいいのだと気づき、MouseGesture.ahkでそれっぽいものを作ってみた。　mHの設定ファイルっぽいなにかを読み込むようにしたら、ちょっとばかり複雑化。詳しいことはスクリプト読んでもらうとして、簡単に説明すると「タイトルバーで右クリックすると、本物とは別に独自メニューも隅っこに表示される」というシロモノ。<br/><br/>　まず"MG_User.ahk"の"初期化処理"セクションに以下を記述。&nbsp;&nbsp;MenuId_Max := 0, ItemId := 0, HieLv := 0<br/>
&nbsp;&nbsp;MenuId_Cur := "WH" MenuId_Max<br/>
&nbsp;&nbsp;Loop,Read, WinHack.txt<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;dummy := RegExMatch(A_LoopReadLine, "^\s?([\[\]\;]|----)?\s?([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)\s*,?\s*([^,]*)", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if(";" == $1)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;ItemId++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if("[" == $1) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuId_HL%HieLv% := MenuId_Cur<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Max++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Cur := "WH" MenuId_Max<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%MenuId_Cur%_Text := $2<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ItemId_HL%HieLv% := ItemId<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ItemId := 0<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HieLv++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if("]" == $1) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HieLv--<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuId_HLUpp := MenuId_HL%HieLv%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Cur_Text := %MenuId_Cur%_Text<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Menu, %MenuId_HLUpp%, Add, %MenuId_Cur_Text%, :%MenuId_Cur%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuId_Cur := MenuId_HLUpp<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ItemId := ItemId_HL%HieLv%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WM_X%MenuId_Cur%_%ItemId% := $3<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WM_Y%MenuId_Cur%_%ItemId% := $4<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WM_W%MenuId_Cur%_%ItemId% := $5<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WM_H%MenuId_Cur%_%ItemId% := $6<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Menu, %MenuId_Cur%, Add, %$2%, WH_WM<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;Menu, WH0, Add<br/>
&nbsp;&nbsp;Menu, WH_WK, Add, 実行, WH_WK<br/>
&nbsp;&nbsp;Menu, WH_Etc, Add, 強制終了, :WH_WK<br/>
&nbsp;&nbsp;Menu, WH_Etc, Add, プログラムのフォルダを開く(&O), WH_AppDirOpen<br/>
&nbsp;&nbsp;Menu, WH_Etc, Add<br/>
&nbsp;&nbsp;Menu, WH_Etc, Add, WinHack.txtを開く, WH_SettingOpen<br/>
&nbsp;&nbsp;Menu, WH0, Add, その他, :WH_Etc　次に、同じく"MG_User.ahk"の"サブルーチン定義"セクションに以下を記述。WH_Show:<br/>
&nbsp;&nbsp;Menu, WH0, Show, 0, 0<br/>
return<br/>
<br/>
WH_WM:<br/>
&nbsp;&nbsp;WM_X := WM_X%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WM_Y := WM_Y%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WM_W := WM_W%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WM_H := WM_H%A_ThisMenu%_%A_ThisMenuItemPos%<br/>
&nbsp;&nbsp;WinMove, A, , %WM_X%, %WM_Y%, %WM_W%, %WM_H%<br/>
return<br/>
<br/>
WH_WK:<br/>
&nbsp;&nbsp;WinKill, A<br/>
return<br/>
<br/>
WH_AppDirOpen:<br/>
&nbsp;&nbsp;WinGet pid, PID, A<br/>
&nbsp;&nbsp;wmi := ComObjGet("winmgmts:")<br/>
&nbsp;&nbsp;queryEnum := wmi.ExecQuery(""<br/>
&nbsp;&nbsp;&nbsp;&nbsp;. "Select * from Win32_Process where ProcessId=" . pid)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;._NewEnum()<br/>
&nbsp;&nbsp;if queryEnum[process] {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(process.CommandLine, """?([^""]+|[^\s]+)""?", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;SplitPath, $1, , AppDir<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Run, explore %AppDir%<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;wmi := queryEnum := process := ""<br/>
return<br/>
<br/>
WH_SettingOpen:<br/>
&nbsp;&nbsp;Run, WinHack.txt<br/>
return　そして、"設定編集"から以下をインポート。ただ、これだと右クリックで独自メニュー表示、もう一度右クリックで本物表示なので、煩わしい人は適当に。[TitleBar]<br/>
Custom=MG_HitTest()="Caption"<br/>
<br/>
[RB__]<br/>
G=RB__<br/>
TitleBar=GoSub,WH_Show　最後に、MouseGesture.ahkと同じディレクトリに"WinHack.txt"を作り、設定を記述する。書式は以下の通り。"["と"]"でサブメニュー化。ネストも可。"メニュー項目名, X, Y, Width, Height"でウィンドウ移動・サイズ変更項目を作成可能。";"で始まる行はコメント行。上の書式に沿わない行（空改行も含む）はセパレータになる。　ああ、うん。設定ファイルでいじれるのはWinMoveだけですがなにか！？　――ここまでやったなら、ほかのコマンドにも対応すればよかったんだが、メニューのネストに対応したあたりで満足してしまった（ぐへー。　上の説明だけじゃよくわからんと思うので以下実例。[移動 (&I)<br/>
&nbsp;&nbsp;基準座標に戻す (&W), 0, 0<br/>
&nbsp;&nbsp;タスクバーを避ける, 165, , , <br/>
&nbsp;&nbsp;----<br/>
&nbsp;&nbsp;左656, 0, 0, 656 ,1050<br/>
&nbsp;&nbsp;右1024, 656, 0, 1024 ,1050<br/>
&nbsp;&nbsp;右1024, 656, 0, 1024 ,1050<br/>
&nbsp;&nbsp;----<br/>
&nbsp;&nbsp;左1024, 0, 0, 1024 ,1050<br/>
&nbsp;&nbsp;右656, 1024, 0, 656 ,1050<br/>
]<br/>
[リサイズ (&R)<br/>
&nbsp;&nbsp;850*635, , ,850 ,635<br/>
&nbsp;&nbsp;1130*850, , ,1130 ,850<br/>
&nbsp;&nbsp;----<br/>
;&nbsp;&nbsp;800*600, , ,800 ,600<br/>
&nbsp;&nbsp;1024*768, , ,1024 ,768<br/>
&nbsp;&nbsp;1280*1024, , ,1280 ,1024<br/>
]　自分が実用してるやつなので、対応しときながらネスト使ってないっていうね……。　さて。ここまでやっといてなんだが。完成させて記事（これ）書こうと、mH公式を見に行ったら昨夏に64bit対応版が公開されていて、32bit環境でも安定しているっぽい！（ぎゃー。<br/>
　というわけでAHKの自由度万歳な人以外はmH入れればいい！B@r09u3 Style Op.2 -- menuHacker公式。<br/>
blechmusik2の日記>最前面のウィンドウのプロセスを取得し、そのアプリケーションのパスを抜き出すスクリプト　--　丸パク参考にした。
        ]]></content> 
  </entry>  
  <entry>
    <title type="text"><![CDATA[PR: 広告・Webの求人情報・転職支援はマスメディアン]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/AAXCw8GphQQ4?type=2&amp;ent=5369e4f627206b0cbcad39301c5a3c8e"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/AAXCw8GphQQ4?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/aY8M_dpUWt7G/AAXCw8GphQQ4?type=2&ent=5369e4f627206b0cbcad39301c5a3c8e"/></a></td></tr><tr><td align="left" valign="top" > 宣伝会議グループの人材紹介会社。広告・Webの求人数・転職支援実績NO.1クラス </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2012-01-09T19:01:56+09:00</created>
    <modified>2012-01-10T18:17:12+09:00</modified>
    <issued>2012-01-09T19:00:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>5369e4f627206b0cbcad39301c5a3c8e</id>
  </entry>
  <entry> 
    <title>AutoHotKeyで、画像ビューア（MassiGra）の複数ウィンドウ運用を便利にしてみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17120140/"/>  
    <id>http://poimono.exblog.jp/17120140/</id>  
    <issued>2011-11-21T20:56:00+09:00</issued>  
    <modified>2011-12-04T19:38:15+09:00</modified>  
    <created>2011-11-21T20:57:30+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　MassiGraのウィンドウを切り替えたり、並べたりするAHK_Lスクリプト。ANSI版でもたぶん動く。<br/>
　MassiGraでなくとも応用効くと思う。　MassiGraのキー設定で「現在のファイルを開く : Num.」「前のファイル : 上」「次のファイル : 下」にして、複数の画像を開く運用をしていて、ウィンドウ切り替えが面倒なので書いてみた。　左右キーでウィンドウ切り替え。Ctrl+右でひとつ前のウィンドウを避けて配置。Ctrl+左はリセット（左端に配置）。Esc長押しですべてのMassiGraを閉じる。;--------------------------------------------------<br/>
; MassiGra<br/>
;--------------------------------------------------<br/>
#WinActivateForce<br/>
#IfWinActive ahk_class TF811202_MassiGra_Main<br/>
<br/>
Left::<br/>
&nbsp;&nbsp;WinSet,Bottom,, ahk_class TF811202_MassiGra_Main<br/>
&nbsp;&nbsp;WinActivate, ahk_class TF811202_MassiGra_Main<br/>
return<br/>
<br/>
Right::<br/>
&nbsp;&nbsp;WinActivateBottom, ahk_class TF811202_MassiGra_Main<br/>
return<br/>
<br/>
$Esc::<br/>
&nbsp;&nbsp;KeyWait, Esc, T1<br/>
&nbsp;&nbsp;if ErrorLevel<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;GroupAdd, Massigras, ahk_class TF811202_MassiGra_Main<br/>
&nbsp;&nbsp;&nbsp;&nbsp;GroupClose, Massigras, A<br/>
&nbsp;&nbsp;&nbsp;&nbsp;BefWin_X := 0, BefWin_W := 0, BefWin_XW := 0<br/>
&nbsp;&nbsp;} else {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Send, {Esc}<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;KeyWait, Esc<br/>
return<br/>
<br/>
^Left::<br/>
&nbsp;&nbsp;BefWin_X := 0, BefWin_W := 0, BefWin_XW := 0<br/>
^Right::<br/>
&nbsp;&nbsp;if (BefWin_XW == NULL)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;BefWin_X := 0, BefWin_W := 0, BefWin_XW := 0<br/>
<br/>
&nbsp;&nbsp;WinGetActiveStats, NowWin_T, NowWin_W, NowWin_H, NowWin_X, NowWin_Y<br/>
<br/>
&nbsp;&nbsp;if (BefWin_XW + NowWin_W > A_ScreenWidth) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if (BefWin_X == 0) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Move_X := A_ScreenWidth - NowWin_W<br/>
&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Move_X := 0<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (NowWin_W > BefWin_X) {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (NowWin_W > (A_ScreenWidth - BefWin_W))<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinMove, ahk_id %BefWin_Hwnd%, , A_ScreenWidth - BefWin_W<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinMove, ahk_id %BefWin_Hwnd%, , NowWin_W<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;} else {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Move_X := BefWin_XW<br/>
&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;BefWin_Hwnd := WinActive(A)<br/>
&nbsp;&nbsp;BefWin_X := Move_X<br/>
&nbsp;&nbsp;BefWin_W := NowWin_W<br/>
&nbsp;&nbsp;BefWin_XW := BefWin_X + BefWin_W<br/>
<br/>
&nbsp;&nbsp;WinMove, Move_X<br/>
&nbsp;&nbsp;WinActivateBottom, ahk_class TF811202_MassiGra_Main<br/>
return　ウィンドウ配置はYも考慮するとややこしくなるので妥協。　使いやすいタブ対応画像ビューアさえあれば……。
        ]]></content> 
  </entry>  
  <entry>
    <title type="text"><![CDATA[PR: BPnetコミュニティー「戸田覚 デジモノ辛口道場」]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/xQjEp9nTrv74?type=2&amp;ent=4a53ab23171ffd98a0aaebded7402703"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/xQjEp9nTrv74?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://bnr.rssad.jp/rss/img/aY8M_dpUWt7G/xQjEp9nTrv74?type=3&ent=4a53ab23171ffd98a0aaebded7402703"/></a></td></tr><tr><td align="left" valign="top" > コミュニティー登録プレゼントキャンペーン中につき100名様に豪華賞品が当たります </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2011-11-21T20:57:30+09:00</created>
    <modified>2011-12-04T19:38:15+09:00</modified>
    <issued>2011-11-21T20:56:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>4a53ab23171ffd98a0aaebded7402703</id>
  </entry>
  <entry> 
    <title>AutoHotKey_Lで、Operaのセッションをテキストに書きだしてみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/17028068/"/>  
    <id>http://poimono.exblog.jp/17028068/</id>  
    <issued>2011-10-28T23:43:00+09:00</issued>  
    <modified>2011-10-29T01:34:54+09:00</modified>  
    <created>2011-10-28T23:44:36+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　OperaのセッションファイルからURLとタイトルを抽出してプレーンテキストにするスクリプト。　セッション溜め過ぎたので整理しようと思ったのだが、Operaでは確認も編集もできないという……。でもきっと世界の誰かが補助ツール作ってるに違いない！と思ったのだが見当たらず。なぜだ。Donutにすらお気に入りグループ編集ツールがあるというのに……。　使い方は、セッションファイル（.win）のパスを引数にしてスクリプトを呼び出すだけ（スクリプトにドロップで可）。あとは勝手にセッションと同じ位置にテキストファイルが作られる。&nbsp;&nbsp;loop, %0%<br/>
&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;CmdLineBuf := %A_Index%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Loop %CmdLineBuf%, 1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CmdLine := A_LoopFileLongPath<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileRead, OSession, *P65001 *t %CmdLine%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if (ErrorLevel)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgbox, File Read Error<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;WinNum := 2<br/>
&nbsp;&nbsp;&nbsp;&nbsp;result :=<br/>
&nbsp;&nbsp;&nbsp;&nbsp;loop<br/>
&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx := RegExMatch(OSession, "\[" WinNum "history url\].+?count=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (0 == idx)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisNum := $1 - 1<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history title\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history url\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result = %Result%%HisTitle%`n%HisUrl%`n<br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop, %HisNum%<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisNum--<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history title\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisTitle := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RegExMatch(OSession, "\[" WinNum "history url\].+?" HisNum "=(.*?)\n", $)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HisUrl := $1<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result = %Result%&nbsp;&nbsp;%HisTitle%`n&nbsp;&nbsp;%HisUrl%`n<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result = %Result%`n`n<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WinNum++<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;if (""==Result)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Continue<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileDelete, %CmdLine%.txt<br/>
&nbsp;&nbsp;&nbsp;&nbsp;FileAppend, %Result%, %CmdLine%.txt<br/>
&nbsp;&nbsp;}　今回使った正規表現を移植すればAutoHotKey_Lで、Operaの前回セッションを確認・退避できるようにしてみた。2のスクリプトもUTF-8対応になるが、別に困ってないのでいいやっていう。
        ]]></content> 
  </entry>  
  <entry> 
    <title>サンワサプライの「ワットモニター」を買った。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/16804378/"/>  
    <id>http://poimono.exblog.jp/16804378/</id>  
    <issued>2011-09-02T22:34:00+09:00</issued>  
    <modified>2011-09-02T22:50:54+09:00</modified>  
    <created>2011-09-02T22:35:28+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　一般向けの消費電力測定用機器はいくつかあるが、その中で、「力率を考慮する」かつ「低価格なもの」という条件で、サンワサプライの「ワットモニター」を購入した。ワットモニターは電力料金（通算/1日換算）、CO2消費量（積算/1日平均）、消費電力、積算電力量、計測時間を表示することができる。一般向けには十分な測定項目だ。　ほかの製品はというと、例えば同じサンワサプライの「ワットチェッカーPlus」は、ワットモニターの測定項目に加え、電圧、電流、皮相電力、周波数、力率などの測定が可能だが、通常はまず必要ない。それだけで価格が倍近い（約&yen;5k）。<br/>
　かといってワットモニターよりも安い製品に目を向けると、たった数百円の違いで積算電力量しかわからなかったり、力率を考慮しないために計測結果が不正確だったりする。<br/>
　というわけで、現状はワットモニター一択であると思われる。SANWA SUPPLY ワットモニター TAP-TST8
        ]]></content> 
  </entry>  
  <entry> 
    <title>PC周りの消費電力を測定してみた。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/16804349/"/>  
    <id>http://poimono.exblog.jp/16804349/</id>  
    <issued>2011-09-02T22:29:00+09:00</issued>  
    <modified>2011-10-18T21:23:22+09:00</modified>  
    <created>2011-09-02T22:30:14+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　サンワサプライの「ワットモニター」を購入したのでPC周りを一通り測ってみた。　まず新PC（i7機）。アイドル時100W前後。動画サイトをブラウジングしても、HD動画を再生しても100W前後。3Dゲームで120W前後。動画エンコで1コア全開で140弱、2コア全開で170W弱。<br/>
　ゲームや動画の開始直後、数秒間20Wほど上がるのはHDDの動作によるものだろうか？　旧PC（Pen4機）。アイドル時80W強。動画サイト閲覧時120W前後。<br/>
　最小構成だからか、Pen4に持つイメージよりは少ない。ファイルサーバーとしては大きすぎるが、使うのはIDE接続HDDに用がある時だけなので、問題ない。<br/>
　ただ、シャットダウン時で4Wってのはデカすぎる。新PCはスタンバイでも2Wなのに。　バッファローのWSXGA+モニタ。最低輝度30W、最高輝度40W。<br/>
　SONYのSXGAモニタ。最低輝度12W、最高輝度28W。<br/>
　WSXGA+モニタ、最低輝度でも明るいとは思っていたが、その通りの消費電力であった。　Wi-Fi AP。常時5W。<br/>
　APとしてはほとんど使っておらず、Ethernet Hubとして運用していたのだが、使ってなかったEthernet Hubが1Wだったので交換することにした。Wi-Fi使いたくなった時だけ使うようにしよう。自分で思ってたより使ってたので、結局戻した。　バッファローのNAS。常時9W。<br/>
　アイドル時もアクセス時も変わらず。HDD停止時の計測はまた今度。HDD停止時は4.5W。　セルフパワーUSB Hub。最小構成（USB供給のスピーカーのみ接続）で1W。<br/>
　スピーカーの電源は本体からとるようにして、Hubは必要な時だけ電源供給するようにすれば消費電力をなくせるか。USB延長ケーブルが必要だ。　総評としては、PC周りは思ったよりは電力消費してなかった。100W台を越えないのには驚いた。削減できるのが5Wだけというのは、過去にわたって無駄がなかったわけで、よいことなのだが寂しい。<br/>
　旧PCの待機電力と、モニタの輝度には気をつけたい。また、WindowsXPに用がある時も主に旧PCを使ってたが、VMWare使うよう心がけよう。――VMWare、直接ホストのHDDにアクセス出来ればもっと気軽に使えるんだがなぁ。
        ]]></content> 
  </entry>  
  <entry>
    <title type="text"><![CDATA[PR: 哺乳びん消毒は使ってみないと製品の良さは分からない！]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/tu4ldTjO8con?type=2&amp;ent=afee233ef4017be3166298aefa487e89"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/tu4ldTjO8con?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/aY8M_dpUWt7G/tu4ldTjO8con?type=3&ent=afee233ef4017be3166298aefa487e89"/></a></td></tr><tr><td align="left" valign="top" > 母乳でも、完ミでも、必須なのが哺乳びん消毒グッズ。モニターレポートで要チェック！ </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2011-09-02T22:30:14+09:00</created>
    <modified>2011-10-18T21:23:22+09:00</modified>
    <issued>2011-09-02T22:29:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>afee233ef4017be3166298aefa487e89</id>
  </entry>
  <entry> 
    <title>Operaでエキブロの「プレビュー」が使えないと思ったら、設定ミスだった。</title>  
    <link rel="alternate" type="text/html" href="http://poimono.exblog.jp/16772983/"/>  
    <id>http://poimono.exblog.jp/16772983/</id>  
    <issued>2011-08-26T11:24:00+09:00</issued>  
    <modified>2011-09-02T20:56:33+09:00</modified>  
    <created>2011-08-26T11:25:47+09:00</created>  
    <author> 
      <name>lordnoesis</name> 
    </author>  
    <dc:subject>テクノロジ</dc:subject>  
    <content type="html"><![CDATA[ 
　Operaでエキサイトブログの投稿画面にある「プレビュー」が使えないと思ったら、JSをブロックしていたせいだった。<br/>
　検証用Operaでは利用可能なために発覚したもので、原因はコンテンツブロックではなく、拡張「ContentBlockHelper」のURLフィルタだった。コンテンツブロックより簡単に登録できてしまうため、注意が必要である。　Operaのスタンドアロンインストール（ファイルを分散させない、リムーバブルドライブでの持ち運びを想定したモード）はこういう時にも便利やね。
        ]]></content> 
  </entry>
  <entry>
    <title type="text"><![CDATA[PR: 30代、40代必見！年収800万円以上の求人情報満載]]></title>
    <link rel="alternate" type="text/html" href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/FeV7TL.8cggJ?type=2&amp;ent=e56d539cfa1dd06fded69d8649351006"/>
    <content type="html"><![CDATA[<table cellspacing="0" cellpadding="0"><tbody><tr><td align="left" valign="center"><a href="http://rss.rssad.jp/rss/ad/aY8M_dpUWt7G/FeV7TL.8cggJ?type=2" target="_blank"><img alt="" style="border: 0;" border="0" src="http://rss.rssad.jp/rss/img/aY8M_dpUWt7G/FeV7TL.8cggJ?type=3&ent=e56d539cfa1dd06fded69d8649351006"/></a></td></tr><tr><td align="left" valign="top" > スペシャリスト・エグゼクティブ限定のハイクラス求人／[en]転職コンサルタント </td></tr></tbody></table><div style="font-size:10px;"><span style="padding-top:5px;"><br style="display:none"/><a href="http://www.rssad.jp/trendmatch/trendmatch.html">Ads by Trend Match</a></span><br/></div>]]></content>
    <created>2011-08-26T11:25:47+09:00</created>
    <modified>2011-09-02T20:56:33+09:00</modified>
    <issued>2011-08-26T11:24:00+09:00</issued>
    <author>
      <name>rssad.jp</name>
    </author>
    <id>e56d539cfa1dd06fded69d8649351006</id>
  </entry> 
</feed>

