遠隔キー操作&キーボードシミュレーション SendInput

1台のPCで他のPCにキー入力するという代物です。
マウスで他PC操作に切り替えるとか特定のキーで切り替えるとかではだめで、
欲しいのは、任意の指定キーを、他のPCには違うキーを入力するとういものです。

ないので作成することに、
メインPCでキーフックして、キーコードをTCP/IPでサブPCに
送り、サブPCでは受信したキーコードを設定に従い、特定キーコード
にして、SendInputでキーボードイベントを発生させるという物です。
(ちなみに、対象はDirect-Xアプリでも反応すること)

Direct-Xアプリでも反応するには、以下のコードにすればOKでした。

INPUT input[1];
::ZeroMemory(input, sizeof(input));
input[0].type = INPUT_KEYBOARD;

Sleep(pre);
input[0].ki.wVk = key_code;
input[0].ki.wScan = MapVirtualKey(key_code, 0);
input[0].ki.dwExtraInfo = ::GetMessageExtraInfo();
input[0].ki.dwFlags = KEYEVENTF_SCANCODE;
::SendInput(1, input, sizeof(INPUT));
Sleep(after);
input[0].ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
::SendInput(1, input, sizeof(INPUT));

1)KEYEVENTF_SCANCODEにすれば、DirectInputを使ってるDirect-Xアプリでも
反応します。
2)キーDOWN、UPにSleepを入れます。
一般のアプリだと入れる必要はないですが、あるアプリ群ではこれだと
反応してくれませんので、遅延を入れます。
設定によって、pre,afterを最適値に設定します。(数msec~数10msec)

KCN 3カ月待ち。

奥さんの実家でNTTフレッツ光はやめて、KCNに変更中。
コストダウンのため、KCNに変更なのですが、3カ月待ちとのこと。
(私のところと、実家はK-optiです。)

そういえば、会社のクライアントでもKCNで手こずったことが。
普通WANの接続は、どこの通信キャリアもPPPoEなのですが(と自分は思ってたのですが。)
KCNはDHCPです。ですのでルータを自前で用意する場合は、MACアドレスをKCNに
連絡して登録してもらう必要があります。

今、使用しているルータは古くて、WAN側をDHCPで設定できず、
新たにルータを購入する必要がありそうです
(PC1台しか接続しない場合は、KCNで用意されたもので十分なのですが。)
http://www.kcn.jp/internet/nagare/koji/setsuzoku/

openssl 64ビット版 / smail 64ビット版

smailの64ビット版作成の前にopenssl の64ビット版のライブラリーを作成しないといけないということで、openssl の64ビット版のライブラリーを作成。(自分用メモ)

http://www.openssl.org/source/から、最新ソースコードopenssl-1.0.0e.tar.gzをダウンロードして、
C:workvcfreeopenssl-1.0.0e-64に展開

1)コンパイル環境の設定

C:workvcfreeopenssl-1.0.0e-64>”C:Program Files (x86)Microsoft Visual Studio 10.0VCbinx86_amd64vcvarsx86_amd64.bat”
Setting environment for using Microsoft Visual Studio 2010 x64 cross tools.

※32bitを作成する場合は、C:Program Files (x86)Microsoft Visual Studio 10.0VCbinvcvars32.bat”
を実行する。

2)Configure (要ActivePerl,要make)

C:workvcfreeopenssl-1.0.0e-64>perl Configure VC-WIN64A no-asm --prefix=C:workvcfreeopenssl-1.0.0e-64

※アセンブラ(MASM)があれば、no-asmを外すと、SHA等の計算はアセンブラーコードを使用され速度が速くなります。
まあ、そんなに高速を必要としないので、私はいつも、no-asmを指定。

3)makeファイル作成

C:workvcfreeopenssl-1.0.0e-64>msdo_win64a
C:workvcfreeopenssl-1.0.0e-64>perl utilmkfiles.pl 1>MINFO
C:workvcfreeopenssl-1.0.0e-64>perl msuplink.pl win64a 1>msuptable.asm
C:workvcfreeopenssl-1.0.0e-64>ml64 -c -Fomsuptable.obj msuptable.asm
Microsoft (R) Macro Assembler (x64) Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: msuptable.asm
C:workvcfreeopenssl-1.0.0e-64>perl utilmk1mf.pl no-asm VC-WIN64A 1>msnt.mak
C:workvcfreeopenssl-1.0.0e-64>perl utilmk1mf.pl dll no-asm VC-WIN64A 1>msntdll.mak
C:workvcfreeopenssl-1.0.0e-64>perl utilmkdef.pl 32 libeay 1>mslibeay32.def
C:workvcfreeopenssl-1.0.0e-64>perl utilmkdef.pl 32 ssleay 1>msssleay32.def
C:workvcfreeopenssl-1.0.0e-64>

3)make

C:workvcfreeopenssl-1.0.0e-64>nmake -f msnt.mak

※smailにSSLを静的リンクライブラリで実装するので、msnt.makを実行する。
DLLを作成したい方は、nmake -f msntdll.makの方を実行する。

4)オブジェクト

C:workvcfreeopenssl-1.0.0e-64out32にssleay32.lib,libeay32.libが生成される。
C:workvcfreeopenssl-1.0.0e-64inc32にopenssl用のインクルードファイルが生成される。

※テストコマンド等も生成される。必要なのは、ssleay32.lib,libeay32.libだけですが、本当に64bitで動作しているのか、openssl.exeを起動して、タスクマネージャで見てみる。

以上で、openssl 64bit版のライブラリーの出来上がりです。

5)SMAILを64bit化する。(64ビットアプリは未公開です。)

・64bit化のため、一部ソースコード修正
・4)で作成した、includeファイル、ライブラリーを指定。

・コンパイル
64bit版のsmail.exe完成、64bitで動作しているか確認。

※正常にSSLでメール送信。
opensslを使ってSSL通信するプログラムは至って簡単で、sslの初期化をしてしまえば、後はソケットディスクリプタをSSLに通すだけです。

google+ 入れたら IE6で「インターネットサイトを開けません 操作は中断され ました」

https://www.picolix.jp/にgoogle+ ボタン設置してたのですが、ふとIE6でアクセスしてみると、
「インターネットサイトを開けません 操作は中断されました」
となり表示できません。で調べてみると、

これだとだめで、


<html><head>
<base target="_top">
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{lang: 'ja'} </script>
</head><body></body></html>

こちらだとOK


<html><head>
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
{lang: 'ja'} </script>
<base target="_top">
</head><body></body></html>

base targetタグが影響しているようです。(なぜだか不明)
base targetタグは外しました。

MT3.2からwordpress3.2.1にブログ変更しました。

自専用サーバなので、あんまり負荷をかけたくなく、MTの静的ページ生成方式の方が好きなのですが、WordPress の方が今はトレンディ―なので、今回MT 3.2からWordPress 3.2.1 にブログ変更しました。ついでにcenazumina.picolix.jpからwww.picolix.jp/blog/に変更。

WordPress 3.2.1 は、phpが5.2.4以上でないとだめで、当専用サーバCentOS5.6のPHPは5.1.6でインストールできず。しかたがないので、PHP5.3にUPDATEすることに。

1) PHP5.3へのUPDATEはこちらを参考にしました。
http://okiraku-server.net/server/2011/05/27178.html

※yum remove php php-*で以前のPHPをアンインストールした場合、PHP5.3には、pearが入っていません。ですので、pear,peclがなくなってしまします。

2) PHP5.3 pearのインストール
http://akabanessa.blog73.fc2.com/blog-entry-129.html

pear,peclが使えるようになります。

3) PHP  imagickの再インストール

PHP5.1.6で使っていたimagick.soがロードエラーしていたので、peclで再インストール。
#pecl uninstall imagick
#pecl install imagick
これで再コンパイルされてモジュールが生成されインストールされる。

4) MTのデータをエクスポートしてwordpressにインポート

必要プラグイン:Movable Type and TypePad Importer
http://wordpress.org/extend/plugins/movabletype-importer/

5) twitterへ自動投稿

必要プラグイン:Simple Tweet
http://wppluginsj.sourceforge.jp/simple-tweet/

MTの時は、自作プログラムで投稿していましたが、今は便利なプラグインがたくさんあり、今回は、Simple Tweetを利用。MTの時は、短縮URLは、goo.glを使っていたのですが、
Simple Tweetには、bit.ly,j.mp,TinyURL,is.gdの4種類あるのですが、goo.glがないので改造。

flash player 10.1 バックグラウンド時の 2FPS 回避方法

回避方法が分かりました。
mms.cfgに「FullFramerateWhenInvisible = 1」を記述すれば良いようです。
[ファイル名] mms.cfg (文字コードはUTF-8)
[ファイル内容]
FullFramerateWhenInvisible = 1
↑の一行(改行して下さい。)を記述。またすでにmms.cfgで他のオプションを記述している場合は、追記して下さい。
(注意:アドビでは、mms.cfgをいじることは推奨しておりません。自己責任でお願い致します。)
[保存場所 ]
 windows xp : C:WINDOWSsystem32MacromedFlash
windows 7 32bit : C:WindowsSystem32MacromedFlash
windows 7 64bit : C:WindowsSysWOW64MacromedFlash
※windows 7 64bit版は、flash player 11 beta を使用のこと。
flash player 10.1以降で表示がバックグラウンドに回った時は、2FPSになります。CPUの使用効率を上げるためですが、大きなお世話なんですねこれが・・
http://help.adobe.com/ja_JP/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-8000.html
早速 http://icebar.sco.jp/info/ のWEBキャプチャーサーバのFLASH PLAERを最新10.3.181.34にしてOK。
また、windows 7 64bitのflash player 11 beta(64bit版) + Crenahtml2jpg(64bit版)
でも動作OKでした。
Crenahtml2jpgの64bit版は、32bit版と比較してあまりメリットがないと思うので非公開です。
欲しい方はメール頂ければ、メール送付致します。
[参考URL]
「flash player バックグラウンド 回避」
ん~。このキーワードになぜたどり着かなかったのか。
当初、自分のプログラムが悪いと思って、プログラム関連でのテクニカルタームで検索してた、もっと素直に検索すれば良かったのかも。
1年も前に解がありました。
http://seikatukaizen777.blog7.fc2.com/blog-entry-518.html

Google+1ボタンがIEで折り返されて表示される。

Google+1ボタンがIEで折り返されてしまい、1行に表示できない。
皆さんどうしているのか、ググってみることに。
<g:plusone size=”small”>&lt/g:plusone>

これでいいはずなんだけど、まだ折り返される。
<div style=”display:inline !important;”><g:plusone size=”small”></g:plusone></div&gt

<div style=”display:inline !important;”width:30px;”><g:plusone size=”small”></g:plusone></div&gt
これでOK。右空白がtable td枠サイズを超えたため,width:30px;を指定した。
または↓これでもOKです。
<div style=”display:inline !important;”zoom: 1;”><g:plusone size=”small”></g:plusone></div&gt

fit-pc2 のCPU温度、HDD温度 & アルミブロック(45mm厚)の放熱効果

fit-pc2の放熱用にアルミブロック(45mm厚)を置いていましたが、
どれぐらい効果があるのか、または無いのか見てみることに。
室温28℃
アルミブロック有
 CPU温度39℃ HDD温度41度
アルミブロック無
 CPU温度43℃ HDD温度47度
fit77.png
置くだけですごく効果あります!内蔵HDDは、fit-PC2の底面にあり、アルミブロックに近いので尚更冷却効果あるようです。
HDDは55℃を超えて運用すると故障する確率がぐんと上がると言われています。
現在の温度はこちら。http://icebar.sco.jp/info/fit.html
※尚、このアルミは、親父の工場でいらないアルミの半端ものを切り出してもらったものです。

fit-pc2のCPU温度、HDD温度測定

CPU温度、HDD温度を表示するツールでGUI画面で表示し、ロギングするツールはあるのですが、コマンドラインで動作するものがなかったのでしょうがないから、
http://www.usefullcode.net/2007/02/hddsmart.html
http://island.geocities.jp/cklouch/cputemp/cputemp.htm
を参考(感謝)にコマンドラインで、CPU温度、HDD温度を取得するプログラムを作りました。
fit-pc2の温度モニター用に、このプログラムをperlから呼び出して、10分毎に呼びす予定。
ちなみに現在の温度は、
====================
C:appstemperature>temperatureCPU.exe
39
C:appstemperature>temperatureHDD.exe
41
====================
CPU温度:39℃
HDD温度:41℃
室温 :28℃
これならぜんぜん大丈夫かな。
fit-pc2は、筐体自体がヒートシンクの役割をしているので、筐体は、もっと発熱しています。
筐体の下にアルミブロック(45mm厚)を置きました。(親父の工場で、いらないアルミの半端ものを切り出してもらった。今時の工作マシンって金属切るのにぜんぜん音がしないですが・・)

fit2-1.png