キーエミュレーションで、
「ALT + PrintScreen」が動作しない理由は、
Windows7の問題かもしれません。
Win7になってから、
HTAなどからエクセルアプリケーションなどを呼び出すと、
呼び出されたエクセルにフォーカスが当たりません。
呼び出したHTAなどにフォーカスが残ったままになるんです。
なので、ショートカットキーでVBSを起動した時点で、
元々ハードコピーを取りたかったアプリケーションのアクティブウインドからフォーカスが外れ、
VBSにフォーカスが移動しますが、VBS自体はウインドウを持っていないので、
デスクトップ上にアクティブなウインドウが無くなってしまって、
コピー対象が無くなってしまいます。
場合によっては、タスクバーにフォーカスが当たってて、
タスクバーだけが印刷されてくることもあります。
その印刷結果は、パッと見ただけでは訳のわからないものになってしまってます。
2014年9月25日木曜日
2014年9月9日火曜日
画面のハードコピー No2
画面全体のハードコピーをプリントアウトするのは結構簡単にできました。
そうなると欲がでてきます。
最近のモニターは大画面なので、
フツーにハードコピーを出力したら、見たい部分がすごく小さい場合があります。
そこで、アクティブウインドのみを出力する方法がないか考えました。
クリップボードにコピーするなら、
全画面は「PrintScreen」キーだけ、
アクティブウインドは「ALT + PrintScreen」なので、
エクセルのVBAで、キーのエミュレーションを重ねればいいと思います。
キーをエミュレーションする場合は、
そのキーのコードと、キーを「押す」と「離す」の動作を組み合わせますので、
「ALT」をキーダウン
「PrintScreen」をキーダウン
「PrintScreen」をキーアップ
「ALT」をキーアップ
の順にエミュレートさせれば簡単やん。
で、早速改良してみたら動きません。
なんでじゃ?
そうなると欲がでてきます。
最近のモニターは大画面なので、
フツーにハードコピーを出力したら、見たい部分がすごく小さい場合があります。
そこで、アクティブウインドのみを出力する方法がないか考えました。
クリップボードにコピーするなら、
全画面は「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は呼び出せないんです。
これを合わせ技で解消しています。
フリーのツールは探せばいくらでもあります。
でも、うちの会社はフリーを使うには申請が必要なので、邪魔くさいです。
そこで、自分で作りました。
まあ、実際には作るよりフリーの利用申請をするほうがよっぽど早くて楽ですけどね。
これも練習です。
技術的な参考はネットにいくらでもあります。
私は、エクセルの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上の他の純正データベースと同様になります。
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)をシャットダウンする必要があるのかな?
Server は毎晩シャットダウンします。
翌朝、Serverがエラーを吐きます。
ディスクにエラーがあると。
ホストOS(Server2008)をシャットダウンする前には、必ずゲストOS(Windows 7)をシャットダウンする必要があるのかな?
IIS 7 のアプリケーションIDってなんや? No5
ちょっと間違ってたかもしれません。
アプリのアプリケーションプールの詳細設定にある、「アプリケーションID」を、
「ApplicationPoolIdentity」から、
「LocalSystem」に変更した。
「LocalSystem」に変更した。
と書きましたが、
色々試してみたところ、「NetWorkService」でも、
通常使うプリンター以外のプリンターへのアクセスが可能なことがわかりました。
セキュリティー的には「NetworkService」の方が安全なようです。
色々試してみたところ、「NetWorkService」でも、
通常使うプリンター以外のプリンターへのアクセスが可能なことがわかりました。
セキュリティー的には「NetworkService」の方が安全なようです。
セキュリティーレベルについては、
MicroSoft TechNet によると以下の通りです。
Local Service:
Local Service アカウントは Users グループのメンバーであり、このアカウントには Network Service アカウントと同じユーザー権利が与えられていますが、対象がローカル コンピューターに制限されています。アプリケーション プール内のワーカー プロセスが Web サーバーの外部へアクセスする必要がない場合に、このアカウントを使用します。
Local System:
Local System アカウントは Web サーバーの Administrators グループに含まれるアカウントであり、このアカウントにはすべてのユーザー権利が与えられています。Local System アカウントを使用すると、Web サーバーに対する重大なセキュリティ上のリスクが生じることがあるため、このアカウントは可能な限り使用しないでください。
NetworkService:
Network Service アカウントは Users グループのメンバーであり、アプリケーションの実行に必要なユーザー権利が与えられています。このアカウントの資格情報を使用すると Active Directory ベースのネットワーク全体で対話を行うことができます。
MicroSoft TechNet によると以下の通りです。
-------------------------------------------------------------------------------
ApplicationPoolIdentity:
既定では、アプリケーション プール ID アカウントが選択されています。アプリケーション プール ID アカウントは、アプリケーション プールが開始されるときに動的に作成されます。そのため、このアカウントは使用するアプリケーションに対して最も高いセキュリティを提供します。
Local Service:
Local Service アカウントは Users グループのメンバーであり、このアカウントには Network Service アカウントと同じユーザー権利が与えられていますが、対象がローカル コンピューターに制限されています。アプリケーション プール内のワーカー プロセスが Web サーバーの外部へアクセスする必要がない場合に、このアカウントを使用します。
Local System:
Local System アカウントは Web サーバーの Administrators グループに含まれるアカウントであり、このアカウントにはすべてのユーザー権利が与えられています。Local System アカウントを使用すると、Web サーバーに対する重大なセキュリティ上のリスクが生じることがあるため、このアカウントは可能な限り使用しないでください。
NetworkService:
Network Service アカウントは Users グループのメンバーであり、アプリケーションの実行に必要なユーザー権利が与えられています。このアカウントの資格情報を使用すると Active Directory ベースのネットワーク全体で対話を行うことができます。
-------------------------------------------------------------------------------
登録:
投稿 (Atom)