2014年10月13日月曜日

画面のハードコピー No4

VBSを実行した時点で、画面上からフォーカスをもったウインドウが無くなってしまうので、
それなら、VSBを起動した後に、2秒ほどのSleepを入れて、その間にマウスで再度フォーカスを持つウインドウを指定する(=ハードコピーを撮りたいウインドウ)ことで逃げました。

ただ、それでも時々フォーカスを取り損ねることがあって、もう少し改良が必要です。





2014年10月8日水曜日

SQLServer 64ビットからAccessのMDBを参照

SQLServer 64ビットからMDBに接続するためのODBCが無い?
逆(Access から SQLServerへ)は問題ないんですけど。

どうすりゃいいんだ?


2014年9月25日木曜日

画面のハードコピー No3

キーエミュレーションで、
「ALT + PrintScreen」が動作しない理由は、
Windows7の問題かもしれません。

Win7になってから、
HTAなどからエクセルアプリケーションなどを呼び出すと、
呼び出されたエクセルにフォーカスが当たりません。

呼び出したHTAなどにフォーカスが残ったままになるんです。

なので、ショートカットキーでVBSを起動した時点で、
元々ハードコピーを取りたかったアプリケーションのアクティブウインドからフォーカスが外れ、
VBSにフォーカスが移動しますが、VBS自体はウインドウを持っていないので、
デスクトップ上にアクティブなウインドウが無くなってしまって、
コピー対象が無くなってしまいます。

場合によっては、タスクバーにフォーカスが当たってて、
タスクバーだけが印刷されてくることもあります。
その印刷結果は、パッと見ただけでは訳のわからないものになってしまってます。




2014年9月9日火曜日

画面のハードコピー No2

画面全体のハードコピーをプリントアウトするのは結構簡単にできました。

そうなると欲がでてきます。

最近のモニターは大画面なので、
フツーにハードコピーを出力したら、見たい部分がすごく小さい場合があります。

そこで、アクティブウインドのみを出力する方法がないか考えました。

クリップボードにコピーするなら、
全画面は「PrintScreen」キーだけ、
アクティブウインドは「ALT + PrintScreen」なので、
エクセルのVBAで、キーのエミュレーションを重ねればいいと思います。

キーをエミュレーションする場合は、
そのキーのコードと、キーを「押す」と「離す」の動作を組み合わせますので、
「ALT」をキーダウン
「PrintScreen」をキーダウン
「PrintScreen」をキーアップ
「ALT」をキーアップ
の順にエミュレートさせれば簡単やん。

で、早速改良してみたら動きません。
なんでじゃ?

2014年9月7日日曜日

画面のハードコピー No1

簡単な資料や、引き継ぎ書などを作る時に、画面のハードコピーが簡単にプリントアウトできたら便利ですよね。

フリーのツールは探せばいくらでもあります。

でも、うちの会社はフリーを使うには申請が必要なので、邪魔くさいです。

そこで、自分で作りました。
まあ、実際には作るよりフリーの利用申請をするほうがよっぽど早くて楽ですけどね。
これも練習です。

技術的な参考はネットにいくらでもあります。

私は、エクセルのVBAを使って、WIN32APIを呼び出して使ってます。
ちょっとした細工で、エクセルをそのまま起動するのではなく、
VBSからエクセルオブジェクトを非表示で呼び出してます。
そうするとちょっとかっこいい。

さらに、そのVBSのショートカットをデスクトップに置いて、
ショートカットの「ショートカットキー」に「CTRL + ALT + P」とかに設定すれば、
印刷したい画面が表示されている状態で、「CTRL + ALT + P」を押せば、
そのままのイメージで出力されます。

かなり便利です。

VBAはAPIを呼び出せますが、
VBSは呼び出せないんです。
これを合わせ技で解消しています。

2014年9月6日土曜日

オラクルをSQLserverに繋ぐ No1

Oracleデータベースは素人には難しいです。

SQLSeverなら、Expressが簡単に導入できるし、SSMS(SQL Server Management Studio)が一緒にインストールされるので、素人でも比較的簡単に運用できます。

でも、業界標準はOracleの勝ちです。
なので、ベンダーで作成されてくるシステムはほとんどOracleベースです。

これをなんとか自分の土俵に持ってきたい。

そこで、SQLServerのリンクサーバー機能を利用してOracleを接続してしまいました。
これだと、ほとんどOracleであることを気にせずにデータの利用ができます。
SQLServerに MicroSoft Oracle ODBC ドライバが用意されていますので、意外と簡単に接続できました。

一旦リンクサーバーの設定が完了すれば、扱いはほとんどSQLServer上の他の純正データベースと同様になります。

2014年9月2日火曜日

Hyper-Vのシャットダウン No1

Windows Server 2008 r2 上に Hyper-V で Windows 7 を立てています。
Server は毎晩シャットダウンします。

翌朝、Serverがエラーを吐きます。
ディスクにエラーがあると。

ホストOS(Server2008)をシャットダウンする前には、必ずゲストOS(Windows 7)をシャットダウンする必要があるのかな?