ブラウザトラブル解決!

 ここしばらく、ChromeとOperaに不可解なトラブルが相次いで起きたのだが、それらが解決できたので解決法を書いておこうと思う。
 なお、以下の問題は現行PC(Windows7環境)で起きている。

Operaでエキブロの記事投稿・編集画面がおかしい

 投稿日時が空欄になるなど。

 原因はUserJSのフォルダにあるファイル。UserJSはUniteアプリの「UJS Manager」で管理していたんだが、どうもファイル名によっては無視されるらしく、意図しないUserJSがまだ残っていた。うっかり。でも、UserJSのON/OFF切り替えるカスタムボタンでUserJSが原因かどうか検証済みだったんだけどなあ。

Chromeが正常に動作しない

 Aeroが有効でもXP以前の青いウィンドウが起動し、操作を受け付けない。一時的な対処方法としては互換モードをWindows7に設定することだが、確実ではなかった。

 原因はChromeを起動するのに使っているランチャーが互換モードで動いていたこと。
 互換モードのソフトから呼び出されたソフトも互換モードを引き継ぐ仕様だったのか……。うっかり。

Operaの一部挙動がおかしい

 "保存"や"開く"などのコモンダイアログを表示すると落ちる。Ctrl+クリックやCtrl+Sやメニュー、設定画面からなど、どの方法で呼び出してもダメ。他にも、OperaからChromeを呼び出すと前述の青いウィンドウのトラブルに遭遇。

 原因は、Operaを呼び出すのに使っていたAHKが互換モードで動いていたこと。
 ってまたかよ進歩ねえぇぇぇぇ!! というか「OperaからChrome呼び出したら互換モード」って時点で気づけよ。うっかりってレベルじゃねーぞ!

結論

 互換モードには気をつけよう。「いじくるつくーる」あたりで互換モード設定のレジストリを確認できるので活用しよう。


[PR]
by lordnoesis | 2011-05-25 22:38 | テクノロジ | Trackback | Comments(0)

LORD PLAINリニューアル!

 11周年記念! 半端ッ! 内容? 据え置きだぜ!
 しかし見事にただの倉庫と化しておるな。isweb崩壊時に「ソフトだけwebストレージに移して閉鎖でよくね?」とか検討された程度の本家。まあなんか、blogだのついったーだのpixivだの情報が分散してるので、ポータル的な感じでひとつ。

 以下(どーでもいいぐだぐだな)経緯概略。

 ver.9も飽きたし、年単位で放置ってどうなのよ。ワイドモニタだと広がりすぎて見難いし、ver.10作るかー。 --> 今時はこんな便利なスタイルがあるのかすばらしい。IE6,7滅べ! --> IEのバージョンによって適用されるスタイルを変えれる、だと……!? すばらしい。この機能に免じてIE6でもそれっぽく見れるようにしてやるか。だが滅べ! --> だらだら作ったり放置したりしてたら、どこに問題があってリリース保留してたのかわからなくなってしまった……。リリースするかー。 --> あれ、5月って確か――ああ2日後L.Pの開設記念日か。じゃああと2日寝かしておこう。 --> リニューアルしたお! <-- 今ここ


[PR]
by lordnoesis | 2011-05-23 17:02 | Web | Trackback | Comments(0)

AutoHotKeyで、Operaの起動をより便利にしてみた。

 マスターパスワード入力ダイアログをアクティブにしてみたの発展版。

 前回のOpera終了時に大量のタブ開いてたけど、そのセッションは残しつつ、まっさらなOperaを起動したいなーと思ったのでやってみた。はじめStringGetPosとStringMidでセッションファイル解析してたんだが、よく考えたら標準INI形式だったんでIniReadでよかったっつー……。

 「はい」で普通に起動、「いいえ」で最終セッションを現在日時でリネーム。起動時のマスターパスワード入力ダイアログをアクティブにする機能もあるよ! AHKスクリプトにマスターパスワードとか記入するなよ! 絶対するなよ!

#WinActivateForce
  SessionsPath := "セッション保存先のパス"

  IniRead, WinCnt, %SessionsPath%autosave.win, session, window count
  if("ERROR" != WinCnt)
    GoSub, SessionAnalyze

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


SessionAnalyze:
  loop, %WinCnt%
  {
    IniRead, HisCnt, %SessionsPath%autosave.win, %A_Index%history title, count
    if("ERROR" == HisCnt)
      Continue
    HisCnt--
    IniRead, WinTitle, %SessionsPath%autosave.win, %A_Index%history title, %HisCnt%
    WinTitles := WinTitles " " U2A(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


; ↓encutil.ahk(http://yak3.myhome.cx:8080/junks/index.html#afx.afxscript)由来
U2W(ByRef result, str)
{
  len := DllCall("MultiByteToWideChar", "UInt", 65001, "UInt", 0, "Str", str, "Int", -1, "UInt", 0, "UInt", 0)
  If len > 0
  {
    VarSetCapacity(result, len * 2)
    DllCall("MultiByteToWideChar", "UInt", 65001, "UInt", 0, "Str", str, "Int", -1, "Str", result, "UInt", len)
  }
}

W2A(ByRef str)
{
  len := DllCall("WideCharToMultiByte", "UInt", 0, "UInt", 0, "Str", str, "Int", -1, "UInt", 0, "UInt", 0, "UInt", 0, "UInt", 0)
  If len > 0
  {
    VarSetCapacity(result, len)
    len := DllCall("WideCharToMultiByte", "UInt", 0, "UInt", 0, "Str", str, "Int", -1, "Str", result, "UInt", len, "UInt", 0, "UInt", 0)
  }
  return result
}

U2A(str)
{
  U2W(t, str)
  result := W2A(t)
  return result
}

 これをrun_opera.ahkとか適当に保存して実行するだけ。

 セッション保存先のパスは「ヘルプ > Operaについて」の「保存されたセッション」でわかる(ファイル名までは書かないように)。
 AHKのダメ文字対策はしてない。起きてもダイアログの表示が欠けるだけだから気にすんな!(えー。


 おまけ。

#IfWinActive ahk_class OperaWindowClass

  F1::^w
  F2::^+Tab
  F3::^Tab


[PR]
by lordnoesis | 2011-05-21 13:59 | テクノロジ | Trackback(1) | Comments(0)
ブログトップ | ファンになる