読者です 読者をやめる 読者になる 読者になる

あらかじめ日記

2chまとめサイト「ソノウソホント?」の雑記と、ブログで使えるスクリプトとかテクニックとか。その他、音楽やアニメ、漫画の話題とかも。

まとめサイト「ソノウソホント?」と「ムードもりあげ楽団」はこちら。

【C#】WinFormでDataBindingsを実装してみる(そしてRadioButtonが曲者)


最近WPFで、MVVMパターンをかじっているのですが、そこでポイントとなるのがバインドと言う機能。
簡単に言うと、コントロールのプロパティとそれを保持するデータのプロパティを関係付け(バインドし)、UIのクラスとロジックのクラスの分離と連係を行う機能ですが、説明は他の詳しいサイト様にお任せするとして、この機能はWinFormでも使えます。

続きを読む

Google IMEの変換候補(サジェスト)の凄さ&あとIMEの状態も教えてくれる

前回、入力前にIMEの状態を分かりやすくするツールについて紹介しました。

allthewayfrom.hatenablog.com
ツールでなんとかすることに目が行っていましたが、そもそもIME自体を変えてしまえばどうだろう、と言う思いが出てきます。

そう、無料であるのですよ、Googleさんがリリースしているものが。

そんなGoogle IMEMicrosoft IMEから乗り換えて使ってみた感想です。

続きを読む

IMEの状態を表示させるフリーソフト&Firefoxアドオンのおすすめ

IMEがON(もしくはOFF)だと思い込んで、文字を打ってから気づくことに結構イラつく人もいるのではないでしょうか。(少なくとも自分はそうなのですが)

IMEツールバーに表示はされているのですが、そんな隅にいる存在をほとんど見ることもなく、と言うかそもそも邪魔なので非表示にしていますし。笑

そこで、現在のIMEの状態を表示させる支援ツールを入れています。

続きを読む

【Excel/VBA】Undo可能な値貼り付けマクロ(図形内対応)をOnKeyのCtrlやAltでショートカットキー化

Excel上で、Ctrl+C→Ctrl+Vを行うと書式も含めてコピーされるのが邪魔で「値の貼り付け」を利用する人は多いと思います。

最近のExcelCtrl+Vの後にアイコンが出て形式指定で再貼り付けできるようになりましたし、Ctrl+Alt+Vで形式指定の再貼り付けダイアログが出せるのでそんなに苦でも無いかもしれませんが、それでもキー一発で値貼り付けしたい!という場合に以下のマクロ。

    If Application.ClipboardFormats(1) = -1 Then
        Exit Sub
    End If
     
    If Application.CutCopyMode And TypeName(Selection) = "Range" Then
        SendKeys ("%hvv")
    Else
        SendKeys ("%hvt")
    End If


マクロ実行をUndo可能にするためにはSendKeysを利用したショートカット操作でコマンドを実行させる必要があります。
その時のショートカットが、【Alt(%)→ホーム(h)→貼り付け(v)→値の貼り付け(v)】となります。

値の貼り付け」だけであれば、カスタマイズでクイックアクセスツールバーにアイコンをおいて、Alt+数字のショートカットで実行させることもできますが、Excelのコピーモード(セルがコピー状態になっている)以外や、セルが選択されていない(図形内にフォーカスがある)場合では「値の貼り付け」が行えないので、このマクロではその場合は、【貼り付け(v)→テキストを保持(t)】に切り替えるようにしています。

また、最初のApplication.ClipboardFormatsクリップボードのデータ有無をチェックしています。

次に、このマクロにショートカットキーを割り当てる方法は個人用ブックを利用しますが個人用ブックについてはこの辺りで。

support.office.com


この個人用ブックに、開いた時に自動実行されるauto_open()を追加して、Application.OnKeyメソッドでキーとプロシージャを割り当てます。 
OnKeyの説明はこちらで。

Application.OnKey メソッド (Excel) - MSDN



これを、OnKeyCtrl+Shift+Vとかでやりたいところですが、Snedkeysを実行するOnKeyのキーでShift、Ctrl、Alt非常に相性が悪いのです。。

ShiftIME ONでShift+アルファベットだとキー入力が優先されOnKeyが動かない
Ctrl →SendKeysでAlt押下の短縮キーで実行する場合にOnKey発火時のCtrl押下が効いて動いてくれない
Alt →そもそもOnKeyが動かない

これを解決する術はないかと、結構悩んだのですが、そもそもExcelでやりきるのは無理だと判断。


ふと、AutoHotkeyが使えるのでは?ということに気づきます。
AutoHotkeyは以前紹介しました。↓)

allthewayfrom.hatenablog.com

まずOnKeyには、他のショートカットに影響なさそうな適当なキーを割り当てておきます(Shift+F1など)

AutoHotkeyで、Excelに対しCtrl+Shift+Vを割り当て、先ほどOnKeyで割り当てたキーをAutoHotkeyで送ればCtrlAltの組み合わせでもOnKeyでマクロ実行させることができました!


ちなみにSendKeysだけであればわざわざExcelでマクロ化をせずにAutoHotkeyで送るだけで事足りますね。



【C#】ボタンをクリックした場合の、直前のアクティブコントロールの取得

フォーム(コンテナ)上で、現在フォーカスのあるアクティブコントロールは、ActiveControlのプロパティ取得できます。

この時、ボタンをクリックした時に、その直前にアクティブだったコントロールが取りたい場合のメモ。

続きを読む

【C#/XML-RPC】プログラムでブログの投稿をする

以前、XML-RPCを利用してファイルのアップロードや記事の一覧取得などはこちらで書きました。

allthewayfrom.hatenablog.com

今回は、記事のアップロードに挑戦してみます。

続きを読む

【C#】WebBrowserでYouTube動画を再生する(ドキュメントモードと、ユーザーエージェントを変更する方法)

C#WebBrowserコントロールを利用していて、YouTubeのページを見た時に動画が再生できないことに気づきました。
IE本体にはFlashの最新版を入れているはずなのに、「最新版をインストールしてください」と言われる)

その対処方法です。

(この辺の製作記の続きです)

allthewayfrom.hatenablog.com

続きを読む