ラベル Wndows の投稿を表示しています。 すべての投稿を表示
ラベル Wndows の投稿を表示しています。 すべての投稿を表示

2015年2月21日土曜日

Windows 8 スリープからの自動復帰を切る

自宅のメインマシンはWindows 8機で基本的にスリープで運用しています。
スリープまたは休止状態から勝手に復帰するようになって
睡眠を妨げるようになったのでイラついた勢いで設定を見直しました


原因として考えられるのは、
WakeOnLan
マウス等デバイスの (誤)操作
タスクスケジュールの実行

 

1.原因究明


直近の起動理由を知るには次のコマンドを実行します

>powercfg lastwake


マウスでの実行であれば次のような出力
切ってみましたが効果なし

Wake History [0]
  Wake Source Count - 1
  Wake Source [0]
    Type: Device
    Instance Path: ACPI\PNP0303\4&6
    Friendly Name:
    Description: 標準 PS/2 キーボー
    Manufacturer: (標準キーボード)



復帰予定のスケジュールを探す

>powercfg waketimers


次のような出力があります。
原因はmcupdate_scheduledというスケジュールのようです。


Timer set by [SERVICE] \Device\HarddiskVolume1\Windows\System32\svchost.exe (Sys
temEventsBroker) expires at 3:31:08 on 2015/02/18.
  Reason: Windows は、スリープ状態の解除を要求したスケジュールされたタスク 'NT T
ASK\Microsoft\Windows\Media Center\mcupdate_scheduled' を実行します。


2.スリープ解除をきる


WakeOnLanの場合、

 デバイスマネージャから対象のネットワークアダプタのプロパティを開く
電源の管理タブから
” Magic Packetでのみ、コンピュータのスタンバイ状態を解除できるようにする”
 のチェックを外すか選択できない状態にする


マウス、キーボードの場合、

デバイスマネージャから対象のデバイスのプロパティを開く
電源の管理タブの ”このデバイスで、コンピュータのスタンバイ状態を解除できるようにする”
のチェックを外す


スケジュールの場合、

”管理ツール>タスクスケジューラ”から対象のスケジュール(mcupdate_scheduled)を捜し
条件タブの”タスクを実行するためにスリープを解除する”のチェックを外す

2014年1月18日土曜日

Windows8 でのmecab javaバインディング ビルド

mecabとjavaバインディングをビルドしたのでそのメモ
環境は、Windows 8.1 x64, Visual C++ 2010 Express
           mecab0.996

インストール


Windows Software Development Kit (SDK) for Windows 8.1 をインストール
http://msdn.microsoft.com/en-US/windows/desktop/bg162891


mecabソースをダウンロード
https://mecab.googlecode.com/files/mecab-java-0.996.tar.gz
https://mecab.googlecode.com/files/mecab-0.996.tar.gz


 

libmecabビルド

 

 Configure

Configureする必要がるのか?
取り敢えず、MsysでConfigureする

cd mecab-0.996
./configure

make.bat修正


mecab-0.996/src/make.bat のパスを環境に合わせて修正
私の環境では次のように、上三行を変更

Set PATH=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;%PATH%
Set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;%INCLUDE%
Set LIB=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;%LIB%


libmecab.dllを作成

mecab-0.996/src/make.batを実行

mecab-0.996にlibmecab.dllができる


 

 

Javaバインディング



用意されてるバインディング(MeCab_wrap.cxx)だと動かないので
自分で作成する

mecab-0.996/src/mecab.h を修正する

「#ifndef SIWG」を「#ifndef SWIG」に全部修正(何か所かある)

swigを実行する

cd mecab-0.996\swig
swig -java -package org.chasen.mecab -c++ MeCab.i

MeCab_wrap.cxxが生成される
swigがない場合はここから、パスを通しても完全パス指定でもOK


MeCab_wrap.dllを作成


mecab-java-0.997に作成したlibmecab.dllとMeCab_wrap.cxxをコピー
下のようなコマンドを実行する。パスは環境に合わせて変更

Set PATH=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin;%PATH%
Set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;%INCLUDE%
Set LIB=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;%LIB%


cl /EHsc /LD /I mecab-0.996\src /I "C:\Program Files (x86)\Java\jdk1.7.0_09\include" /I "C:\Program Files (x86)\Java\jdk1.7.0_09\include\win32" MeCab_wrap.cxx libmecab.dll


 

動作確認

libmecab.dllとMeCab_wrap.dllをコピーして 
適当なサンプルを実行


参考サイト:
http://ftablog.s56.xrea.com/index.php?itemid=167
内容はほぼ同じ(Windows7,mecab0.97)

2014年1月15日水曜日

Windows 実行時、引数の最大長

Windowsでexeを実行する際の引数の最大長について
調べたのでメモ

 Windowsのバージョンによっても違いますが
ここではWindows7以降の話



実行ファイルに渡すことのできる引数の最大長 32767 文字
これはUnicodeの制限から来ています

CMD.EXEからの実行の場合、
実行ファイル名も含めて、 8192文字
CMD.EXEの制限です

C#.net等からProcessを作成する場合、2048文字(たぶん)
UseShellExecute = falseにすればいいという噂もありますが、確認できませんでした



CMD.EXEから8192文字 以上の引数を実行 できないのは
結構ネックです。batファイルが実行できないですから。
CMD.EXEではなく、Shellを変更して,PowerShellやMsysを利用すれば
32767 文字まで利用可能なようです。
なので、batで動かない時はpsに拡張子を変更しましょう。


※長い引数を使うよりは、なるべくファイルで渡すべきですが


2013年10月21日月曜日

Windows Defenderの自動定義更新

Windows Defenderの定義更新はWindows Updateに統合されていて
自動更新させようとするとWindows Updateの自動更新も起動してしまいます。
そうすると勝手に再起動されて困ります。


そんなときに試したいのが
Windows Defenderの定義のみを更新するコマンドです

これ、

"C:\Program Files\Windows Defender\MpCmdRun.exe" -SignatureUpdate


私は、プロンプトの表示を避けたいので
下のようなvbsファイルを作成してTaskスケジューラに登録しています


WindowsDefenderUpdate.vbs :

Set ws = CreateObject("Wscript.Shell")

ws.run "cmd /c ""C:\Program Files\Windows Defender\MpCmdRun.exe"" -SignatureUpdate", vbhide