らるるの今日も社畜乙です日記@らるるのわがまま

「Windows」カテゴリの最近の記事

winampを目覚ましに使う方法(2)

[Windows] [日常]

'11/11/30(水曜日)00:54:55

先の方法で目覚ましはOKだったんだけど、そもそもWinampで再生しながらスタンバイした場合、復帰時はWinamp再生しっぱなしにしてくれてたんで、わざわざ復帰時にWinampを強制起動&再生にする必要がなかった。

逆に、タイマーつけて指定時間後にスタンバイにしてくれるようなのが必要なことに気づいた。

スタンバイじゃなくて電源OFFや再起動なら、cmd.exeや「ファイル名を指定して実行」から「shutdown /s -t 2000」とかすればいい。いつもWinamp再生しながらこうやることで、MP3音楽再生のお休みタイマーにしている。詳細はshutdown.exe /? とかすれば出てくるのでそれを見ればよい。でもスタンバイはshutdown.exeからはできないみたい。

スタンバイは「rundll32.exe powrprof.dll,SetSuspendState」でできる。(休止を有効にした時はハイブリッドスタンバイではなくて強制的に休止にさせられちゃうらしい?(未検証)) ということで、これを指定した秒が経過した後に実行するスクリプトを用意すればよさげ。→ sleep.txt *.vbsにリネームしてね

InputBoxの返値確認が冗長な気がするけど、正しい書き方がわからなかった。

続きはさらに明日へ。

winampを目覚ましに使う方法

[Windows] [日常]

'11/11/28(月曜日)23:58:48

winamp.exeをMP3ファイルやm3uファイルを引数にして起動することで、起動と同時に指定したファイルを実行してくれる。でも以前の起動状態のプレイリストで再生してほしい場合はどうするの?とりあえず、以前の起動状態のプレイリストを直接し引数に指定して逃げる。
"C:\Program Files (x86)\Winamp\winamp.exe" "C:\Users\rarul\AppData\Roaming\Winamp\Winamp.m3u"
でも、プレイリストのラスト位置がクリアされて、プレイリストの一番上から再生されてしまう。うーん、どうしたものか。

"/KILL"をつけてwinamp.exeを動かすと、Winampを終了してくれるみたい。
他は、cmd.exe上で "winamp.exe /?" とかするといろいろオプションが出てくる。

あとは、これを適当なVBSにしてタスクスケジューラに登録すればOK。ちゃんとスタンバイから自動復帰してくれるかどうかが心配。
alarm.txt参考にどうぞ。

実験の続きはまた明日。

高解像度でも常に最大化したい人向けのソフト

[Win32プログラミング] [Windows]

'08/01/01(火曜日)05:34:58

「高解像度でも常に最大化したい人向けのソフト」を紹介するという記事ではなく、それはどんなソフトなのかをできれば教えてほしいという記事です。つまり、私自身がもろにそういう人で、まさに困っているけれどもどうすれば快適になれるかがわからない、ということです。

これまで、ほぼすべてのWindowsアプリを「最大化」の状態で使い続けてきた私にとって、WUXGAは強敵です。最大化しても横がムダにあいてしまうんだもん。(こんな感じ) そんなわけで今までに試しに2つほど支援アプリを作ってみたんですが、どうもしっくりこないんですよねぇ。。

最初作ったのは、WUXGAのモニタ1つを(960*1200)のモニタ2つっぽい感じにごまかそうとしたものです。つまり「最大化」しても画面の半分に張り付くようにしようっていうやつです。グローバルフックで画面変更系を横取りし「最大化」メッセージがきたときに書き換えるようなやつ。グローバルフックでは最大化する領域情報の書き換えをしても反映されないらしいので、「最大化」メッセージがきたときにサブクラス化してアプリ内プロシージャを載っとり、んで WM_GETMINMAXINFO のときにごにょごにょしたれと。些細なことを実現するために嫌らしいとこをたくさん対処する必要があり、またタイミングによってうまく動いてくれなかったり、よくよく考えると排他の仕組みを厳重にやらないと大変なことになりうるアプリだと気づかされたりと、今のところ完成できず。キーワードはこの辺、SetWindowsHookEx, WH_CBT, HCBT_MINMAX, RegisterSubClass, WM_GETMINMAXINFO, SM_CXMAXIMIZED

次に作ったのは、仮想的なタスクバーを追加したれっていうソフトです。「最大化」するときはタスクバーの領域は除外されるので、それを逆手にとり、仮想的なタスクバー(=AppBar)を追加してそこは IM系を並べるという方向です。作り始めてから気づいたんですが、それって今はやりの "Sidebar" (ガジェットと呼んだ方がいいか?) となんら代わりがないんですよねぇ。。まぁSidebarほど大げさなものじゃなくていいやということで作ってみたんですが、AppBar部分として登録された領域は、たとえそこにアプリの窓が存在しなくても特別扱いされるらしく、マウスイベントが特別処理されてしまうっぽいです。具体的には、他のアプリをドラッグ中はタスクバー(AppBar)領域に入れないとか。タスクバー周りのメッセージの挙動をちゃんと理解しないといけないっぽそうってことで、今のところ完成できず。キーワードはこの辺、Appbar, SHAppBarMessage, タスクバーみたいなウインドウ

常に最大化するという思想が低解像度デスクトップの卑しい思想なのか、ワイド画面買ったらとっととVistaでガジェット使えというMS様のお教えなのか、今もWUXGA画面を前に右往左往する日々が続いております。

Virtual PC 2007にFC6入れた

[Windows] [パソコン一般]

'07/09/02(日曜日)02:55:34

ホストOSWinXPSP2(Pro)のMicrosoft Virtual PC 2007にFC6(Fecore Core 6 i386)を入れた。いろいろトラブったのでメモしておく。

まず画面がおかしい。 Xがおかしくて絶望的な画面が出たりする。とりあえずインストーラ起動時に「linux text」とかしてインストールを実行。インストール後 X が動くとまた変な画面になるので、起動時にgrub上で「kernel single」を追加するか、起動後に「Ctrl-Alt-F2」してtextモードにする。んで、/etc/X11/xorg.conf で画面の色を24bitから16bitに変更すればOK。VirtualPC2007が24bitに対応していないのが根本原因らしい。

Xを入れない環境でkernelをアップデートすると画面がおかしくなる。新しいKernelがVirtualPCに対応していないだとかなんとか。grub.confで「kernel vesa video=vesafb」とか追加するととりあえずOKになった。どうせ3Dとか使わんから、これでいいっしょ。

コンソールでも高解像度が使いたい。grub.confで「kernel vga=771」とか追加すると 800x600x8bit になってくれるらしい。意味合い的には「kernel vga=0x303」の方がいいらしいが、現状でちゃんと動いているのでもう触らないことにする。別の解像度・色深度にするなら数値を変えてちょ。

Fedoraとは関係ないんだろうけど、シリアル(COM)がなにかおかしい。ホスト上につながったUSB-Serial(pl-2303)がホスト上でCOM5と認識されて、VirtualPC上でゲストCOM1を物理PCのCOM5へとマップ設定し、んでゲストOS(FC6)でgdbベースのデバッガを/dev/ttyS0設定で動かし、USB-Serialの先のターゲットにつなごうとしてんだけど、なんか一部のデータを取りこぼしてるっぽい挙動になってる。BreaksPointちゃんと張れないとか。

USB-Serialのモノ自体は仮想環境じゃないFC6で同じgdbベースのデバッガ使ってつながってるので問題なさそう。ということで、Winのpl-2303用ドライバかVirutalPCのシリアルマッピング部がおかしいと思われるが、普通に考えるとドライバの方が疑いが濃いってことで、Prolificから最新ドライバ落としてきたりしてるがやっぱおかしいなぁ。デバマネ上のドライバのCOM設定を一通り触ったりしてるがどうもわからん。これができると作業で大幅に楽できるだけに、うまくいくまであきらめたくないとがんばって、結局半日ムダにして仕事進まなかったのはここだけの内緒ってことで。

投稿者: らるる | レスつける (1) | トラックバックしたい人 (0)
rarul > どうやら、VirtualPCのCOMマッピングが悪いっぽい。 VMware playerなら問題なくいけた。 ('08/02/01(金曜日)00:58:06)

Vistaブートローダに関するメモ

[Linux] [Windows]

'07/03/26(月曜日)02:18:03

Windows Vista では、従来の Windows XP (と2000、NT4.0も含んでたはず) で使われてきた Ntdetect.com/NTLDR/Boot.ini とかを使った ブートマネジャーから変更され、BCDとかなんとかいうやつに変更された。その影響で、Vista と XP のデュアルブートを構築するときにいろいろと面倒なことに直面する可能性がある。以前のバージョンの Windows オペレーティング システムをデュアルブート構成でインストールした後、Windows Vista が起動しなくなる

Vista のやつをMBRに入れるには、Vista の インストールDVDからブートして、インストールではなく修復を選び、んで「bootrec.exe」を実行すればよい。「bootrec /fixmbr」とか「bootrec /rebuildbcd」とかそんな感じのはず。

ブートセクタを書き直すには、WinXP/Vista 上から VistaのインストールDVD内にある bootsect を実行する。「Q:\boot\Bootsect.exe -NT60 All」とかそんな感じで。-NT5.2 とすると XP互換のものを入れてくれるはず。

ブート時のメニューをさわるにはVista上で「bcdedit」を使う。従来の boot.ini の編集に相当する。パラメータの設定とかは忘れた。Vista上のmsconfig メニューからの編集もほとんどできないに等しいのでいろいろと面倒だ。

ここから下は蛇足。

上のようなことを得て Vista/XPデュアルブート環境を作っていたが、何を血迷ったか Linux (Fedora Core 6)を入れようと思ってしまった。しかもUSB接続のHDDに。必然的にGrub(MBRとブートマネジャーとも)を使うことになるけど、さらに何を勘違いしたのか GrubのStage2をUSB接続のHDDへと入れてしまった。おかげでUSB接続のHDDをつないでいないとGrubのブートメニューすら出せない状態にしてしまった。しかもGA-965p-ds4ベースのPCじゃ、デフォ設定ではインストール中もインストール後の起動時も固まるし。(固まるとIRQかなにかをおかしくするのかWindowsすら起動しなくなってしまいCMOSクリアしないと復帰しなかった、よくわからん。) で、MBRとかを元に戻そうとVistaを起動しようとするといきなり「アクティベーション認証」とかいわれて、認証しないと起動させてくれないし、しかもCMOSクリアで時刻がずれていたために認証が通らなかったし。linuxは ich8使ってる場合は noapic nolapic irqpoll とパラメータをつければたぶん大丈夫だろうけど、これでインストールはできたものの、起動はまだ試してない。という感じでいろいろとトラブった。

まぁあれだ、オレにはよくわからん世界だ。変なことしない方がよかった。