ウェブブラウザ開発ブログ
 
ウェブブラウザ開発ブログ

2009年

マルチプロセススレッド試作物

MultiProcessThread.zip メッセージベース+共有メモリでのIPCを使用したマルチプロセス、スレッドのプロトタイプです。機能は、WTLのタブブラウザサンプル相当しかありません。exeの同じディレクトリにファイルthreadがあるとマルチスレッド、ないとマルチプロセスで動作します。 プロセス、スレッドの動作の違いは、制御の作成がCreateProcess/CreateThreadか、マーシャリングをプロセス間/プロセス内としているかぐらいしかありません。ただスレッドの場合は、共有メモリではなくヒープを使用するなど、改善部分はあります。タブのタイトル更新、アドレスバーのURL更新はIPC、戻る/進む/ホーム/中止は、マーシャリングしたポインタで行っています。マーシャリングはテストで毎回行っています。マウスホイールでのスクロール対応も入れてます。 IPCを決めるとき、名前つきパイプにしようと思ったんですが、パイプだとメッセージボックスやダイアログを表示中だとrecvできないので、UIスレッドとは別スレッドにすることになり、やめました。メッセージベースで単純なSendとし、再入可能の動作にする予定です。ただ固まっている子プロセスのウインドウへメインプロセスのウインドウからタイムアウトなしのSendが行われるとメインプロセスも固まってしまうため、Windowsが内部で自動的にSendしているものは、固まりを防げないかもしれません。たしか、同じホストで、マーシャリングしたポインタを介した呼び出しもメッセージベースなので、呼び先のタブが固まっていると、呼び元に制御が返らない、はずです。マーシャリングするときも応答があるときに行うようにしなければならないようです。 プロトタイプの公開はこれまでとし、次はプロトタイプをいじりながらAnciaに組み込んでいければというところです。
この投稿を読む

ジャンプリストが表示されなくなった

更新履歴 download マウスジェスチャまでのマウス移動距離を設定できるようにしています。 ジャンプリストで最近使ったもの、よく表示するもの、ピンが、いつのまにか表示されなくなってしまいました(タスクは表示される)。原因は不明で、クリアなど行っても表示されないので、しょうがなくAncia.exeが置いてあるフォルダをリネームして再度タスクバーに追加すると、直りました。。SHAddToRecentDocsの呼び方が間違っている?
この投稿を読む

ジャンプリストカスタマイズ

更新履歴 download 久しぶりに更新しました。 ジャンプリストでよく表示するページの表示や、タスクから直にクリップボードテキストで検索、新規タブを開けるようにしました。テキストからの新規タブはある程度httpなどを補完します。タスクの実体はスクリプトに変更したので、アイコンが表示可能になり、スクリプトが書ける人は、いろいろできるようになっています。ただジャンプリストのアイコンは、一度アイコンが設定されると、アイコンを変えても反映されないようです。 ジャンプリストの変更は、設定名jumpListのジャンプリスト設定から行えます。アプリをタスクアイテムから起動したとき、タブがひとつも無い状態でスクリプトが実行されるので、App.ActiveTab()は参照できません。またスクリプトの実行後タブが作成されなかったとき、強制的にlocalhomeが開かれます。 XpでWindowsUpdateがうまくいかないようですが、Xp新規インストールで試してみても大丈夫でした。まだ何か残っているかもしれません。。
この投稿を読む

タスクバープログレス、ジャンプリスト

更新履歴 download プログレスとジャンプリストを付けました。ジャンプリストのタスクはまだ変更できませんが、変更できるようにする予定です。 サムネイルは、ホイールクリックすると閉じることができるなんて知りませんでした。右クリックのほか、左ボタンを押しながらタスクバーボタンをデスクトップ側にドラッグしてもジャンプリストが表示されますが、表示の後、実行したいボタンで左ボタンを離すで起動できないのが、ちょっと残念です。 これで大体Windows7の対応はできたかな。Anciaはただの32ビットアプリなので、64ビットOSでも動くはずです。
この投稿を読む

Windows7ライブサムネイル

更新履歴 download Windows7ライブサムネイルに対応しています。ライブサムネイルは、WM_DWMSENDICONICTHUMBNAILで、タスクバーのサムネイルを返却(DwmSetIconicThumbnail)する、サムネイルをマウスオーバーしたときのWM_DWMSENDICONICLIVEPREVIEWBITMAPでアプリケーション画面に表示するビットマップを返却(DwmSetIconicLivePreviewBitmap)すれば対応できます。ビットマップは32ビットじゃないとE_INVALITARG?で処理が失敗してしまいます。ビットマップサイズもおかしいとINVALIDARGになってしまうようです。 faviconはまだ付いていませんが、そのうち付けます。サムネイルにはボタンをつけれるようなので、最新の状態に更新などつけるかもしれません。 XpとWindows7で同じフォルダのAnciaを起動しても、Windows7側からXpのフォルダのアクセス権をつけないと、設定が保存されない現象がありました。ので注意してください。 AnciaでIE8で落ちず、IE6で落ちる場合があるようです。IE6で落ちる場合はInternetExplorerでも落ちたので、何かのアドオン(flash?)か何かかもしれません。
この投稿を読む

シングルライン表示、タブリストの選択保存

更新履歴 download 何回かバージョンアップし、タブのシングルライン表示に対応しています。アクティブタブを作成すると、自動的にスクロールしますが、非アクティブタブのときは自動的にスクロールしません(仕様)。 タブリストの保存で、保存タブを選択可にもしています。
この投稿を読む

ホイールリダイレクトなど

更新履歴 download バーの位置変更など、いろいろオプション設定を追加しています。どこでもホイール出来る、ホイールリダイレクトオプション設定(wheelRedirect)は、いままでホイール補助の常駐ソフトを使っていたので、気にしていなかったのですが、対応しました。今のところ常駐との競合は起こっていないので大丈夫だと思います。
この投稿を読む

WTLのコマンドバーメモ

WTLコマンドバーでの主にメニュー表示動作メモ。 作成時メッセージフックセットMessageHookProc ボタンが押されると、TrackPopupMenuExでメニューを表示 TrackPopupMenuEx中、MessageHookProcで、バー上のマウスオーバーメッセージのとき、m_nNextPopBtnに次のメニュー表示インデックスをセット。現在のメニューを閉じ、TrackPopupMenuExから1度制御を返す。TrackPopupMenuExを抜けたあとで、m_nNextPopBtnをチェックし、次のメニューを表示するとき、WTL_CmdBar_InternalAutoPopupMsgをポストし、再度TrackPopupMenuExを実行。ここの処理はループっぽく動く。 MessageHookProcでは、左右キーもチェックし、マウスオーバーと同じように動作させる。
この投稿を読む

アドレスバーIME無効、IE6でのズームなど

更新履歴 download アドレスバーでIMEを無効にする設定を追加しています。デフォルトIME無効なので、アドレスバーで日本語を入力したい場合は、アドレスバーの設定でIMEの無効のチェックを外す必要があります。 新規全セキュリティ許可で開くスクリプトnewAllowSecurity.jsを追加しています。ドロップアクションのカスタマイズから追加して使用できます。検索バーの新規タブアクティブ設定も可能にしています。 IE6はズームが出来ていなかったので動作環境はIE7以降としていましたが、できるようになったので、IE6も動作対象としました。ズームはbodyのstyleのzoomを変更して行っていますが、zoomとならないページがあるようです。IE6でホイールボタンクリックで新規タブは出来るようにしたいです。
この投稿を読む
ページ上部に戻る