sshaskpass.exe を(自作して)置き換えます。
現状のもの:
自作したもの: MyPasswordPrompt
[Proceed] を押すと、Console.Write します。
[Save and proeed] を押すと、Console.Write してから保存します。同じ質問を与えると、同じ答えを設定した状態で表示します。
大変残念ながら、TortoiseGitPlink.exe には使えない技法です。cygwin などの ssh.exe を指定してください。
sshaskpass.exe は通常つぎのように利用されています。
%SSH_ASKPASS%" display command line here: > password.txt
コマンドラインに "pass" が含まれていたら、入力文字列を *** で隠します。
2017年1月24日火曜日
2017年1月21日土曜日
Rx SubscribeOn と ObserveOn の使い分け
端的に述べますと、
SubscribeOn = ワーカースレッド
ObserveOn = UI スレッド
こちらのコード例が見事です。ご覧ください!
[Android] OkHTTP + Retrofit + RxAndroid で REST クライアントを実装する
http://dev.classmethod.jp/smartphone/android/okhttp-retrofit-rxandroid/
東京の天気を取得して、画面に表示するようです。
「東京の天気を取得」がワーカースレッド。
「画面に表示」を UI スレッドで実行するようになっています。
SubscribeOn は、最初の ObservableOn より前の処理に適用されます。
ObserveOn は、それより後の処理に適用されます。2 個目以降の ObserveOn も同様です。
図にするとこのようなイメージです:
SubscribeOn = ワーカースレッド
ObserveOn = UI スレッド
こちらのコード例が見事です。ご覧ください!
[Android] OkHTTP + Retrofit + RxAndroid で REST クライアントを実装する
http://dev.classmethod.jp/smartphone/android/okhttp-retrofit-rxandroid/
東京の天気を取得して、画面に表示するようです。
「東京の天気を取得」がワーカースレッド。
「画面に表示」を UI スレッドで実行するようになっています。
// 非同期処理の実行 adapter.create(WeatherApi.class).get("weather", "Tokyo,jp") .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<WeatherEntity>() { @Override public void onCompleted() { Log.d("MainActivity", "onCompleted()"); } @Override public void onError(Throwable e) { Log.e("MainActivity", "Error : " + e.toString()); } @Override public void onNext(WeatherEntity weather) { Log.d("MainActivity", "onNext()"); if (weather != null) { ((TextView) findViewById(R.id.text)).setText(weather.weather.get(0).main); } } });
SubscribeOn は、最初の ObservableOn より前の処理に適用されます。
ObserveOn は、それより後の処理に適用されます。2 個目以降の ObserveOn も同様です。
図にするとこのようなイメージです:
2017年1月20日金曜日
他プロセスに対する GetFocus
他プロセスがフォーカスを持っている場合は、通常 GetFocus は NULL を返します。
RegisterHotKey の処理で GetFocus をしたい場面が出てくるとします。
このようにしたらいけました。AttachThreadInput がキモですね…
GetActiveWindow == GetForegroundWindow になります。
GetFocus で、目当てのコントロールが取得できます。
RegisterHotKey の処理で GetFocus をしたい場面が出てくるとします。
#include <windows.h> #include <stdio.h> int main() { while (1) { HWND hwndForeground = GetForegroundWindow(); DWORD procId = 0; DWORD threadId = GetWindowThreadProcessId(hwndForeground, &procId); AttachThreadInput(GetCurrentThreadId(), threadId, true); HWND hwndActive = GetActiveWindow(); HWND hwndFocus = GetFocus(); AttachThreadInput(GetCurrentThreadId(), threadId, false); printf("%p %p %p \n", hwndForeground, hwndActive, hwndFocus); Sleep(100); } }
このようにしたらいけました。AttachThreadInput がキモですね…
GetActiveWindow == GetForegroundWindow になります。
GetFocus で、目当てのコントロールが取得できます。
登録:
投稿 (Atom)