AutoHotKey_Lで、Operaの前回セッションを確認・退避できるようにしてみた。2

 前回のとほぼ同じもの。Opera11.50は、起動時にマスターパスワード入力ダイアログがアクティブになるようになったので、その辺を修正しただけ。アクティブになってるけど、入力欄にフォーカスあたってないようなので、Tabを1回。違いは行差分にして3行。

#WinActivateForce
  SessionsPath := "セッション保存先のパス"
  IniRead, WinCnt, %SessionsPath%autosave.win, session, window count
  if("ERROR" != WinCnt)
  {
    FileRead, SessionBuf, %SessionsPath%autosave.win
    FileDelete, %SessionsPath%autosaveA.win
    FileAppend, %SessionBuf%, %SessionsPath%autosaveA.win, CP932
    GoSub, SessionAnalyze
  }

  run, Opera.exeのパス, , , OpPid
  OpTitle := "パスワード"
  WinWait, %OpTitle% ahk_pid %OpPid%, , 30
  if(ErrorLevel != 0)
    Exit
  WinActivate, %OpTitle% ahk_pid %OpPid%, , 30
;  WinWaitActive, %OpTitle% ahk_pid %OpPid%, , 30
;  if(ErrorLevel != 0)
;    Exit

  Send, {Tab}
Exit


SessionAnalyze:
  loop, %WinCnt%
  {
    IniRead, HisCnt, %SessionsPath%autosaveA.win, %A_index%history title, count
    if("ERROR" == HisCnt)
      Continue
    HisCnt--
    IniRead, WinTitle, %SessionsPath%autosaveA.win, %A_index%history title, %HisCnt%
    WinTitles := WinTitles " " WinTitle "`n"
  }
  if("" == WinTitles)
    return

  MsgBox, 3, 表示後30秒で強制的に起動します。, 最終セッションを退避せずに起動しますか?`n`n◆最終セッションの内容◆`n%WinTitles%, 30
  ifMsgBox, No
  {
    TimeNum := A_Now
    FileMove, %SessionsPath%autosave.win, %SessionsPath%%TimeNum%.win
    if(0 < ErrorLevel)
    loop
    {
      FileMove, %SessionsPath%autosave.win, %SessionsPath%%TimeNum%_%A_Index%.win
      if(0 == ErrorLevel)
        Break
    }
  }
  ifMsgBox, Cancel
    Exit

return

 そもそもOpera自体が起動時にアクティブとは限らないので、やっぱり強制的にアクティブにするように少し変更。結果として11.50関係なくなったはず。

 11.60では入力欄にフォーカス当たってるので、Opera起動後の"Send, {Tab}"は必要ない。


[PR]
by lordnoesis | 2011-06-29 20:29 | テクノロジ | Trackback | Comments(0)
トラックバックURL : http://poimono.exblog.jp/tb/16534622
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
名前
URL
画像認証
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

ブログトップ | ファンになる