2014年11月20日木曜日

ディスプレイの解像度をバッチ的に変更

これはすばらしいツールです。

ディスプレイの解像度を変更したい場合に、このツールを起動することで、即座に指定した解像度に変更できます。

コマンドラインから起動しますので、バッチファイルをいくつか用意しておけば、ダブルクリックするだけで、目的の解像度に一発変更です。

私の場合は、普段はノートパソコンに外部ディスプレイを接続して、拡張デスクトップにしていますが、時々、ノート側のディスプレイを消して、外部ディスプレイだけで表示したいときがあります。

なので、外部ディスプレイのみ用のバッチファイルと、元に戻す(拡張デスクトップ)用のバッチファイルを用意しています。

使い方は後日に。

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)をシャットダウンする必要があるのかな?

IIS 7 のアプリケーションIDってなんや? No5



ちょっと間違ってたかもしれません。
アプリのアプリケーションプールの詳細設定にある、「アプリケーションID」を、
「ApplicationPoolIdentity」から、
「LocalSystem」に変更した。
と書きましたが、
色々試してみたところ、「NetWorkService」でも、
通常使うプリンター以外のプリンターへのアクセスが可能なことがわかりました。
セキュリティー的には「NetworkService」の方が安全なようです。
セキュリティーレベルについては、
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 ベースのネットワーク全体で対話を行うことができます。


-------------------------------------------------------------------------------

2014年8月30日土曜日

キーボードのキー入れ替え

あるCSタイプのアプリを買いました。
たぶん、VB系で書いてあるんじゃないかなと思います。

入力する項目がたくさんあって、数値入力も多いアプリです。
なのに、一つの項目に入力して、ENTERキーを打っても次の項目にフォーカスが移らないんです。
カーソルは今入力完了した項目で止まっています。

開発業者さんに伝えると、
「次の項目にフォーカスを移動させるには、『Tab』キーを打って下さい。」
やって。

まあそれは知ってるけど、これって邪魔くさいんですよねぇ。
両手を使わないと素早い入力ができないやん。

再度「そんなん邪魔くさいよ。」と伝えたら、
「それ(Tabキーで移動)が業界標準ですよ。」

え~、うっそ~。

まあ、これ以上押し問答をしても埒が明かないので、考えました。

数値入力はフルキーボードのテンキー部分を使うので、
その近辺にあるあまり使わないキーを「Tab」に変身させればいいかも。

探したら、結構フリーであるんですね。

私の場合は、「愛とゆり」さんが作られた、
「KeySwap for XP」を使わせていただきました。
http://www.asahi-net.or.jp/~ee7k-nsd/

私がキーをスワップさせたいマシンのOSは、
Windows Server 2008 r2 です。
一方このツールは名前からするとXP専用。

まあいいや。と思って入れてみたら、見事に動作しました。

今回入れ替えたキーは、右CTRLをTabにしました。

おかげで、テンキーから数字を入力し、わずかな移動距離でTab(旧CTRL)を押せるようになりました。
楽ちんです。

後は、慣れが必要です。
頭で解っていても、左手が勝手に本来のTabキーを押しに行ってしまいます。

このツールは、キーの入替設定をしたら、リブートしなくても、ログオフするだけで反映されます。
サーバーなのでこれはありがたいです。

それに、設定には管理者権限が必要かと思いましたが、今ログインしているユーザーだけに反映させるなら、制限ユーザーでも可能です。

いいですねぇ。

愛とゆりさん、感謝です。






IIS 7 のアプリケーションIDってなんや? No4

でも、やっぱり不便。
通常使うプリンターでないものに出力したいときは度々発生するし。

しかも、クライアント機からアプリを動かしていた時は問題なかったのに、こういう不具合対策で、サーバー機自身でアプリを起動したら、サーバーのローカルドライブにある画像ファイルにアクセスできないこともわかった。

普段はサーバー機自身でアプリは動かさないので、気付いてなかった。。。
で、さらにネットを彷徨ってたら、今度こそ見つけました。

IIS の設定の問題でした。
このアプリのアプリケーションプールの詳細設定にある、「アプリケーションID」が、「ApplicationPoolIdentity」になってました。

ていうか、それがデフォルトらしい。こんなとこいじった覚えないもんね。

これを、「LocalSystem」に変更したところ、なんと、サーバー機でのローカルファイルへのアクセスも、通常使うプリンター以外のプリンターへのアクセスも可能になりました。

っていうことは、もうレジストリのコピー作業は必要ない?よね。

かなり遠回りしましたが、やっと実用可能になりました。

IIS 7 のアプリケーションIDってなんや? No3

色々ネットを彷徨ったり、開発業者さんにプログラムを見てもらったりしましたが、解決できず。
半年ぐらいほったらかしで、仕方なしに以前の2003 Serverで運用してました。

でも、やっと見つけました。
http://support.microsoft.com/kb/184291/ja

これ!ばっちりやん。
なんと、サーバーに登録したプリンターを「System」が使えるように、レジストリに書き込まないといけない。なんじゃそりゃ。

でも、やってみたらいけました。
印刷できたんです。

でも、なーんか変。
サーバー上で「通常使うプリンター」に設定してあるプリンターしか使えない。
しかも、こんなやり方って、新しくプリンターを登録する度にレジストリを書き変える必要がある。
不便やなぁ。

仕方ないので、レジストリを更新するバッチファイルを作りました。
コマンドラインから「reg copy "なんちゃら" "かんちゃら" /s /f」を走らせれば、「なんちゃら」以下のレジストリ情報を、「かんちゃら」以下の場所にコピーすることができます。

当分これで逃げるか。

IIS 7 のアプリケーションIDってなんや? No2

そのアプリの概要は、クライアント側で描画したデータを、サーバーに接続したプリンターから出力するというものです。
クライアント側で描画する時に、事前にファイルサーバーに保管した画像ファイルを下絵にして、なぞっていく感じです。
色々格闘して、クライアントから接続して、下絵ファイルの画像を選択して、描画するところまでたどり着いたのですが、印刷ができない!

サーバーに接続したプリンターにアクセスできないんです。
なんでやろ?
普通は、プリンターのアクセス権を疑いますよね。当たり前。
でも、ほとんどなんでもアクセスできるだけの権限はつけてあるんやけどなぁ。
なんでやろ?

IIS 7 のアプリケーションIDってなんや? No1

ことの発端は、2003 Server で稼働していたWebアプリを 2008 Server r2 に移植したら動かなくなったことです。
外部(インターネット等)への公開は物理的に分断されているイントラネット内でのアプリケーションなので、セキュリティーは甘甘です。

なんやここは?

はじめまして。「にわかん」です。

全くのド素人でありながら、弱小部隊のアドミニを任されてしまったために起こる、格闘記録です。
主に、Windows Server や SQLServer、MS-Access Excel、VBA、VBS、HTA等の初歩的なことで、自分がひっかかって、格闘して、解決(できない場合も含めて)してきたことを備忘録的に書いていきます。

ここに書いてある情報は全く「あてにならん(=信用できない)」ことばかりです。
実行されたことによる責任は全く負いませんので、あしからず。