C#

Shapeクラス(完成)

Bitmapクラスの内部バイト構造へ簡単にアクセスできるBmpProcX(XはPixelFormatに応じた1画素あたりのビット数=1,8,24,32)を使って単純な直線、長方形、楕円を描画するクラスShapeを完成した。全コードはそこそこ多くなったのでブログへ貼り付けずにダウンロ…

自前で簡単FTPクライアントを作ってみる

C#

色々ソースが出来てきたのでHPスペースにアップしようと思う。でもそのまえに、自力でFTPの簡単なアプリを作ってみようと考えている。Cで昔作った事があるのだが、きっとC#ならあっという間に高機能なやつが出来そうだ。基本は「ローカルの指定フォ…

Action<T>を使い倒してみる

Actionは『T型の引数を一つとり返値が無い関数』を意味するdelegate型である。System.Windows.Formsに定義されている。 delegate void Action<T>(T obj);さてコンソールへメッセージを簡単に出力するConsole.Writeの使用方法を良く見てみると・・・ Console.Wri</t>…

Action<T>を使い倒してみる(つづき)

・・・ということでさっそく作ってみた。nが増えるにつれ素晴らしいモノが出力される。念のためにx100をコンパイルしてみてtestと表示できることを確認済み。 using System; namespace garu.ActionN { static class ActionN { const int TAB = 2; const stri…

Web140色の一覧を得る方法

Color構造体には定義済みの名前のついた色のリストが存在している。俗にWeb140色というらしい。これを一覧したい場合には次のようにやる。 using System; using System.Drawing; using System.Reflection; namespace garu.ColorList { static class ColorLis…

Shapeクラス(設計)

C#

ShapeクラスはImageUtilsのBmpProcを拡張した単純な作図クラスとする。最初はBmpProcを派生しようかとも考えたのだが、privateメンバーが多くて派生しても恩恵に授かれそうにないのでBmpProcをメンバーに持つ形で作ることにした。だいたいの雰囲気はこんな感…

気が利かないやつめ・・

C#

なぜか↓こいつは”未割り当てのローカル変数'n'が参照されました”というコンパイルエラーが出る。 using System; namespace garu.test { class test { delegate void callback(); static void Main(string[] args) { int n; callback f2 = delegate { Console…

Shapeクラス(予告)

ImageUtilsの中のBmpProc関係はビットマップの内部バイト構造へ簡単にアクセスできるクラスである。ここで先日から作成していたアプリではマウスの位置を表す四角形を描画する必要があり無理やりコードを書いた。複雑な図形ならビットマップのGDI+を使えばい…

しまったintNearest()があるじゃん

C#

ColorPickerの画像拡大のところはImageUtilsのintNearest()と同じ処理が含まれていたねえ。せっかくなので書き直してみる。MainForm.csの101行目付近。変更前 for (int y = 0; y < FORM_LEN; y++) { for (int x = 0; x < FORM_LEN; x++) { src.SetXY(x / ZOO…

完成にしとく

予想図よりはグラフ用紙風表示とかしてなかったり手は抜いた。見た目を凝るのは別のゲームっぽいアプリで一生懸命やることにしよう。一応マウス位置をあらわす黒い四角だけは描いておいた。以下はMainForm.cs。Win32.csとHook.csは先日のやつから変更ない。 …

核心部分?

C#

さて。スクリーンから画素を取り出すのにはどうしたらいいだろう?せっかくC#なので使えるならばなるべくマネージドなコードを使いたいのでちょっと調べたんだが、GraphicsクラスのCopyFromScreenというものがあった。これは引数で与えた四角形領域を返す関…

キーボードフックのテストモジュール

C#

CTRL+ALT+矢印でマウスが動く。CTRL+ALT+SHIFT+矢印で移動単位が大きくなる。ESCキーでアプリが終了する。このコードでは、こいつが常駐しているときにはCTRL+ALT+矢印などは本来のアプリへはメッセージが送られないというのもテストしている。e.Handled = t…

Win32クラス

とりあえず今必要な最低限のもの。ずっと未来にはちゃんとWinUser.h、WinTypes.hあたりを完全移植に近づけたいが・・・数が半端じゃないなあ(苦笑。 SetWindowsHookExには最後の引数でモジュールIDとかスレッドIDを渡すところがあるんだが、今のところ自分…

Hookクラス

とりあえず標準コンポーネントのTimerっぽく Newでインスタンス作成 +=演算子でユーザーハンドラに紐付け Start()でフック開始 Stop()でフック終了 というクラスを作ることにした。・・・マウスフックとキーボードフックは微妙に処理も似ているので、似て…

さてマウス下の画素の色取得です

C#

ぶっちゃけ、こういうのが作りたいというのをフォームでデザインしてみた。 とりあえず偽装していかにも動作してそうに見せてみた(笑具体的に目に見えるようにデザインしてみると ・マウスを細かく動かして・・・の時点で「マウス下の拡大図」が必要だと気…

C#開発環境について

これも昨日書いて消してしまったんですが。私のC#開発環境IDEの状態です。私はどのIDEも必ずデスクトップの半分のサイズになるよう工夫しています。C#の場合、 最下部:ソリューションエクスプローラ、クラスビュー、エラー一覧、出力 右部:ツールボックス…

グローバルフック

C#

軽く調べたところグローバルフックはDLLを使わなければ実装できないという情報がほとんどだった。しかし疑り深い私は海外の情報も含めてかなり調べてみた。すると低レベルのキーボードフック、マウスフックは何故かDLLを使わなくても実装できるという情報を…

では考えましょう

C#

ドット単位でストレス無く動作というのはキーボード矢印でマウスカーソルを動かせればよい。非アクティブでも動作となるとグローバルフックする必要がある。クリップボードは特に問題なし。グローバルフックについて調べよう。

要件分析

C#

出来れば細かくドット単位でストレス無く操作したい。 他のアプリの画素も取りたいのでウインドウが非アクティブでも動作したい。 得た情報はクリップボードへ送ることでユーザーに渡せれば良い。