ActivePerlだと、"\n"は当然、"\x0a"でも、出力時に 0x0d が着いちゃうんだよね。 0x0a 単体を出力するには、(UNIX/Linux作業時は半ばおまじないと化していた) binmode を使用する。 binmode STDOUT; print "\n"; これで 0x0a 単体。 ファイルハンドル出力なら open F, "> file.txt" or die; binmode F; print F "\n"; close F; もはや Windows 上での開発(C/C++)のソース解析・修正用にしか使ってないな・・・<Perl 前のエントリ: GD::Barcode::QRcodeでQRコード作成 [perl] 次のエントリ: ActivePerlはワイルドカード&<>が使えん [perl] 2013 : 01 02 03 04 05 06 07 08 09 1
Win32モジュール使用 テキストをセット use Win32::Clipboard; Win32::Clipboard("foo\nbar"); または $clip = Win32::Clipboard(); $clip->Set("foo\nbar"); テキストのゲット $getstring = $clip->GetText(); テキスト以外でもとにかくクリップボードの中をゲット $buffer = $clip->Get(); クリップボードの内容の消去 $clip->Empty(); ターミナルへの表示をマウスでコピペするのが嫌で STDIN をクリップボードにセットするスクリプトを書いたが、cygwin 環境のためか割りと重い… というか、悲しいくらいデリファレンスの書き方を忘れてる orz 前のエントリ: diff オプション再帰編 [command] 次のエントリ: タブ幅
Win32 APIにはファイルの変更を監視する方法として、少なくとも2つの方法がある。 私は従来よりファイル監視のためのAPIとして、FindFirstChangeNotification関数を愛用している。 だが、WindowsNT系のUNICODEビルドであれば使えるというReadDirectoryChangeW関数によるファイル監視を使うことにより、パフォーマンスの改善が望めそうに思えたため、これを用いた場合には、どのような実装方法となるのか確かめたく実験してみることとした。 FindFirstChangeNotification APIを使ってファイルを監視する方法 Win32でファイルの変更通知を行うものとしては、Windows95時代から使える方法として、FindFirstChangeNotification関数があげられる。 このAPIは、指定したディレクトリまたは、その配下
ググったら32bit→64bitはNGだけど、64bit→32bitは行けるという情報があったので試したら行けた。DLL Injectionって何?という人は「別のプロセスにコードを割り込ませる3つの方法」にとても詳しく書かれているのでそちらを参考に。(こういうマニアックな記事は好きだ) 面倒なので自作アプリのソースの一部をそのまま貼る。本筋じゃない処理も混ざってるけど自力で読み飛ばし推奨。GOTO_Eは最後のラベルにgotoするマクロ。 bool pAttachRemoteThread(DWORD pid, const char* dllName, bool autoFree, bool waitRemoteSemaphoreRelease){ bool result = false; HANDLE hThread = NULL; PWSTR vDllPath = NULL; HANDL
COMの基礎 COMとは? COM(コンポーネント・オブジェクト・モデル)という言葉を聞いたことがあるでしょうか? COMとは、プログラムをソフトウェアコンポーネント(独立した情報処理を行なう構成要素のこと。単にコンポーネントとも言う。)で構成する、オブジェクト指向のプログラミングモデルの1つです。ActiveXコントロールやOLEといったものも、このオブジェクトモデルが基本的な土台となっています。 COMは、オブジェクトの公開方法や、オブジェクト自身の寿命の管理方法などを定義しています。また、COMはプロセスやネットワークを越えた動作方法も定義しています。COMが定めるこれらの定義に基づいて、オブジェクトの機能が他のコンポーネントやアプリケーションに公開されるのです。 まあ、簡単に言えば、コンポーネントを作成・使用してプログラムをするときの仕様、あるいは取り決めみたいなものです。つまり、
The keyboard is used for several distinct types of input, including: Character input. Text that the user types into a document or edit box. Keyboard shortcuts. Key strokes that invoke application functions; for example, CTRL + O to open a file. System commands. Key strokes that invoke system functions; for example, ALT + TAB to switch windows. When thinking about keyboard input, it is important to
CDHtmlDialog はなぜ IE のユーザー補助設定に依存するのか・・・ というエントリもありましたが、本日ついに CDHtmlDialog ベースのアプリで IE の設定に依存しない方法がわかりました。 全ては、WebBrowser Customization (MSDN) に記載されておりました。IDocHostUIHandler::GetOptionKeyPath を適切に実装すれば良いだけです。翻訳されていればもっと早く気がついたのかもorz 日本語の情報だけを検索しているようではプログラマとしてダメダメですね。 詳細は、CrystalDiskInfo 3.9.0 Beta5 以降もしくは CrystalDiskMark 3.0.0h 以降のソースコード (CDHtmlDialogEx クラス) を参照してください。ただ、本来は自アプリケーションへのパスを設定するべきですが、
通常ディレクトリを作成する場合は、CreateDirectory関数を用いるが、この関数では1度に階層化されたディレクトリを作成することができない。 例えば、以下の例ようにCreateDirectory関数で階層化されたディレクトリを作成しようとするとエラーになり、GetLastError関数の戻り値は「3(指定されたパスが見つかりません。)」となる。 例:CreateDirectoryでカレントディレクトリに階層化されたディレクトリを作成する(エラーになる) if (!CreateDirectory(L".\\a\\b\\c\\d\\e\\f", NULL)) {//エラーになる printf("%d\n", GetLastError()); } そこで、階層化されたディレクトリを1度に作成したい場合は、MakeSureDirectoryPathExists関数を用いる。 MakeSur
ディレクトリの変更を監視するの変更を監視するには、ReadDirectoryChangesW関数を用いる。.NET Frameworkでは、System.IO.FileSystemWatcherがこの関数の機能に相当する。 ReadDirectoryChangesWのプロトタイプ BOOL ReadDirectoryChangesW( HANDLE hDirectory, // 監視するディレクトリのハンドル LPVOID lpBuffer, // 読み取った結果を受け取る // バッファへのポインタ DWORD nBufferLength, // lpBuffer の長さ BOOL bWatchSubtree, // ディレクトリまたはディレクトリツリーを // 監視するためのフラグ DWORD dwNotifyFilter, // 監視に使うフィルタ条件 LPDWORD lpBytes
ファイルが実行可能であるか調べるには、GetBinaryType関数を用いる。 GetBinaryTypeのプロトタイプ BOOL GetBinaryType ( LPCTSTR lpApplicationName, // ファイルのフルパス LPDWORD lpBinaryType // バイナリタイプ情報 ); 使用例 #include <windows.h> #include <stdio.h> int main() { char lpBuffer[1024]; GetSystemDirectory(lpBuffer, sizeof(lpBuffer)/sizeof(lpBuffer[0])); strcat(lpBuffer, "\\notepad.exe"); DWORD dwBinaryType; if (!GetBinaryType(lpBuffer, &dwBinaryTy
タイトルの通り、フォルダ内容の変化を監視するスクリプトです。 検索したら、http://tgolden.sc.sabren.com/python/win32_how_do_i/watch_directory_for_changes.htmlのサイトに全て書かれていました。 以下の内容は、彼のサイトのデッドコピーです。 win32上のPythonでフォルダを監視するには、 os.listdirを使う FindFirstChangeNotificationを使う ReadDirectoryChangesを使う 3つの方法があります。 使いやすさと効率は、FindFirstChangeNotificationを使う方法が一番バランスが取れていると思います。 os.listdirを使う メリット シンプルで書くのも理解するのも簡単 標準モジュールしか使わない→クロスプラットフォーム デメリット い
ファイルやディレクトリの名前や属性、サイズ、書き込み日時、セキュリティ属性変更の変更を検知する 使用するAPI FindFirstChangeNotification FindNextChangeNotification FindCloseChangeNotification HANDLE FindFirstChangeNotification( LPCTSTR lpPathName, // 監視するディレクトリの名前へのポインタ BOOL bWatchSubtree, // ディレクトリやディレクトリツリーの監視用の // フラグ DWORD dwNotifyFilter // 監視のためのフィルタ条件 ); dwNotifyFilterに設定可能な定数 FILE_NOTIFY_CHANGE_FILE_NAME監視中のディレクトリ、またはサブツリーでファイル名が変更されると、変更通知の待
概要 ここでは、非常にシンプルでフリーのデフラグソフト JkDefrag に関しての個人的な覚書を記す。 尚、JkDefrag 3.34 の書き直しとなる。 Build ソースファイルから実行ファイルを生成する場合には付属の Make.bat を利用すると簡単に行えるが、 特定環境に依存する記述内容なので、環境によっては若干修正が必要となる。 また、Makefile で all が指定されているので、 スクリーンセーバーなどの不必要なモノを省き、 普段必要とするものだけをビルドする様に修正しておくのも良い。 Make.bat ( Default ) rem @call "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\SetEnv.Cmd" /2000 /RETAIL @call
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く