kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

2014-01-01から1年間の記事一覧

Win32 APIを使ってOSを再起動する

ちょっと必要になって調べてた。呼び出す関数はExitWindowsExなんだけど特権の調整が必要で単純に呼び出すだけでは成功しない。 ExitWindowsExから調べていって、LUID_AND_ATTRIBUTESのところで... Its meaning is dependent on the definition and use of t…

C#のラムダをWin32呼び出しで使う

あたり前っちゃーあたり前なんですが、Win32を呼び出す際の選択肢として、なぜかラムダを使うという選択肢が思いつかなかった。 delegate Boolean EnumWindowProc(IntPtr hwnd, IntPtr lp); [DllImport("User32.dll")] private static extern Boolean EnumWi…

C++のラムダがCのコールバックにつかえる

ためしにやったら動いた。さすがC++。 #include <Windows.h> #include <iostream> int main() { HWINSTA sta = GetProcessWindowStation(); EnumDesktops( sta, [](LPTSTR desktop, LPARAM lp)->BOOL { std::cout << desktop << std::endl; return TRUE; }, 0); } Win32は列挙系で</iostream></windows.h>…

WPFでHotKeyBox

ホットキー用のコントロールを自前で作る際のポイント。TextBoxのオーバーライドとかは必要なくて、UserControlから十分作れそうな感じ。 ポイントはPreviewKeyDownで処理すること。KeyDownだとCtrl+Aで全選択されたり、特定のキーを拾えなかったりする。 th…

WPFでWindow MessageのHook

Windows Forms同じくオーバーライドかなぁと思っていたら全然違いました。 using System.Windows.Interop; var wnd = new Window(); wnd.Show(); // Show()の後で無いと取れません。 var handle = new WindowInteropHelper(wnd).Handle; var src = HwndSourc…

WPFでHot Key

WPFでHot Keyを取り扱う方法です。登録自体はWin32を用いますが、仮想キーの取り扱いやWindow Handleの取得方法なども課題になります。 順番に。登録・解除はWin32。 using System.Runtime.InteropServices; [DllImport("User32.dll")] private static exter…

デスクトップを指定してプロセスを起動する

プロセスを起動する際は、通常、元のWindow Stationとデスクトップを引き継ぎますが、CreateProcessではこれらを明示的に指定できるようになっています。 STARTUPINFO si = {}; si.cb = sizeof(si); si.lpDesktop = "WinSta0\\AltDesktop"; PROCESS_INFORMAT…

Window Stationとデスクトップ

Windowsのデスクトップはそもそも一つではありません。デスクトップはWindow Stationによって管理されており、既定でDefault、WinLogon、ScreenSaverがあることになっています。 プロセスはWindow Stationに、スレッドはデスクトップにひも付く感じになって…

CreateDesktopによる仮想デスクトップ

Windows 10になって仮想(マルチ)デスクトップが入るみたいですが、しばらく現行Windowsにて仮想デスクトップが出来ないかいじっていました。 CreateDesktopに関しては、前々から気にしつつも見ていなかったのですが、調べてみると結構簡単でした。 /* 1. 新…

Epic -> Reach

背景を白にしたEpicのまっさらさが結構好きだったんですが、Reachに変更しました。 多少でもカスタムできたらよかったのですが、時間がかかりそうだったので断念。 前々から、はてなブログに書いて、Evernoteにクリップという方法で、整形されたノートを作っ…

argv

Node.jsで組んで、必要なツールもNode.jsで書くのが楽だなぁと。ロジックもそのまま使えるので。 そうすると、引数の処理どうしようかなぁとなりますが、argvがヘルプを自動的に作ってくれていい感じでした。 argv var argv = require('argv'); argv.option(…

Nodemailer

Node.jsからちょっとメール使って通知したいなーとか思ったときに便利に使えます。 CentOS 6.5 x86_64 Node.js v0.10.28 Nodemailer v0.6.3 公式の説明が丁寧なので、簡単に使えますね。 Nodemailer Gmailなどを利用しての送信もできますが、サーバーからの…

EPELリポジトリを追加する

CentOSでtmux使いたいよーっと。さくらのVPSだと最初から入っているので、別のクリーン環境で混乱しました... CentOS 6.5 x86_64 EPELに関しては以下を参照。 EPEL epel-release 手順は以下の通り。 rpmパッケージのDL rpmパッケージのインストール /etc/yum…

Markdownに変更

はてな記法を使っていましたが、Markdownで書いてみることにしました。 見出しをどこからはじめるかで、ちょっと悩んだのですが、はてな記法だと記事内はh3から始まるようなのであわせることに。ブログタイトルがh1、記事タイトルがh2と考えれば、妥当なのか…

expressコマンドが見つからない

Node.jsのexpressを使おうと思ったら、expressパッケージからコマンドがなくなっていた。環境は以下。 Node v0.10.26 express 4.0.0 expressの公式を確認したところ、どうもコマンドはパッケージが変わったらしい。 express Guide 以下で手に入る。 $ npm in…

About

Google Analyticsの利用について 本ブログはGoogle Analyticsを利用してアクセスログの収集及び解析を行っています。収集にはcookieを使用します。データは匿名で収集され、個人を特定できるデータは含みません。収集したデータは本ブログの利用状況の把握の…