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

NetworkInterface

NetworkInterfaceは、ネットワークインターフェイスに関する情報を持つクラス・・・。NetworkInterface クラス (System.Net.NetworkInformation)ネットワークインターフェイスの名前一覧を出力する・・・。空の場合は、Systemを参照し、usingではSystem.Net.…

RasEntryDlg

RasEntryDlgは、VPNやダイアルアップ接続エントリーの作成・編集ダイアログを表示する・・・。RasEntryDlg 関数今回は、VPN接続のためにRasEntryDlgで電話帳エントリーの作成を行う・・・。今回はWin32プロジェクト・・・。RasEntryDlg.cppを追加したら、ras…

ServiceMain

今回はWindowsのシステムサービスを作る・・・。ServiceMainは、このサービスのメイン処理を担う部分・・・。ServiceMain 関数まず、コンソールアプリケーションで作成・・・。 (Win32プロジェクトでもできるが、コンソールアプリだと疑似サービスを作成して…

CreateNamedPipe

Windowsで名前付きパイプを作成するには、CreateNamedPipeを使う・・・。CreateNamedPipe 関数名前なしパイプと比べると、あそこまで大変ではない・・・。CreateNamedPipeプロジェクトにCreateNamedPipe.cppを追加し、CreateNamedPipeで"\\.\pipe\TEST"とい…

CreatePipe

Windowsで名前なしパイプを作成するには、CreatePipeを使う・・・。CreatePipe 関数WindowsAPIにはforkが無いし、パイプの扱い方もUNIXとは違うので、パイプによるプロセス間通信の実装は結構難しい・・・。C言語CreatePipeメモ(Hishidama's Windows C "Crea…

mkfifo

mkfifoは、名前付きパイプを作成する・・・。Man page of MKFIFO親プロセスと子プロセスの関係なら、forkでpipeを共有できるが、全く関係ない2つ以上のプロセス間で通信する場合は、名前付きパイプを使う・・・。 名前付きパイプはファイルのようなもので、l…

ReportEvent

ReportEventは、イベントログにメッセージを書き込む・・・。ReportEvent 関数イベントログの出力はちゃんとやろうとすると結構面倒なので、今回は割と単純にログ出力するだけ・・・。まず、TCHAR *型の文字列バッファポインタptszTextを宣言し、newでメモリ…

RegCreateKey

RegCreateKeyは、指定のレジストリキー(regedit.exeで見るとフォルダの部分)を作成する・・・。RegCreateKey 関数 RegCreateKey function (Windows)互換性のために残されているだけなので、RegCreateKeyExを推奨するが、とりあえずキーを作成してみる・・・。…

WlanEnumInterfaces

WiFi関連の操作をしたい場合は、Native WiFi APIを使う・・・。Native Wifi (Windows) Wireless LAN API - 目次 - 汁ごはん中でも、WlanEnumInterfacesは、無線LANインターフェース情報の一覧を列挙する・・・。 (Windows XP3からなので、場合によってはWind…

GetInterfaceInfo

ネットワークインターフェース情報を取得するには、IPヘルパーAPI(iphlpapi.lib)を使う・・・。 GetInterfaceInfoは、ネットワークインターフェースを取得する・・・。GetInterfaceInfo function (Windows)といっても、これはインタフェースの名前とインデッ…

CreateRectRgn

これまで、図形を描画するのにRectangleのような描画APIを使ってきた・・・。 他にも楕円を描くEllipseや、多角形を描くPolygonとかがあるが、この図形そのものをハンドルを持つ1つのオブジェクトとして表示する方法もある・・・。 画面上に置けるこの図形の…

ユニヴァーサル参照

C++

std::moveの仕様を見ると、move (utility) - cpprefjp C++日本語リファレンス"T&& t"という引数の型を見ると、右辺値参照っぽいのになぜ左辺値も引数に取れるのか不思議に思う・・・。 実は、テンプレート関数など、T&&での推論が発生する状況においては、右…

WebRequest

Webページを取得する場合など、HTTPリクエストを作成するには、WebRequestを使う・・・。WebRequest クラス (System.Net)"http://bgstation0.com"のトップページのHTMLを取得する・・・。今回は空のプロジェクトで・・・。 (コンソールでもいいんだけど・・…

DateTime

日時を取得したい場合は、DateTime構造体を使う・・・。DateTime 構造体 (System)DateTime.Nowで現在日時情報が取得できるので、それをTimerで1秒ごとに行い、その都度Labelを更新していくような、簡単な時計を作る・・・。まず、Labelを選択・・・。真ん中…

Timer

Timer(System.Windows.Forms)は、これまでのようなFormウィンドウを持つWinFormsアプリのタイマークラス・・・。Timer クラス (System.Windows.Forms)今回は、5秒ごとにメッセージボックスを出す・・・。メニューをこのように配置して、"開始"クリックと"終…

OpenFileDialog

OpenFileDialogは、"開く"ファイルダイアログのクラス・・・。OpenFileDialog クラス (System.Windows.Forms)前回のメニューで"開く"を設置した・・・。 今回は"開く"を押したら、"開く"ファイルダイアログが表示され、ファイルを選択すると、ファイル名(正…

MainMenu

MainMenuは、ウィンドウ上部のメインメニューのクラス・・・。MainMenu クラス (System.Windows.Forms)ただし、これは.NET Framework 1.1までの古いクラス・・・。 2.0以降はMenuStripを使うのが推奨・・・。[ツール]-[ツールボックスアイテムの選択]から、…

EventHandler

EventHandlerは、ボタンなどのコントロールで発生したイベントに対する処理を書くイベントハンドラメソッド用のデリゲート・・・。EventHandler デリゲート (System)これまで、自動で生成されていたイベントハンドラとその登録処理を自前で手書きで書いてみ…

ジェネリクス

C#

ジェネリクスはC++でいうテンプレートのようなもので、型をパラメータで受け取れるようにすることで、さまざまな型で共通の処理を使うことができる・・・。C++でやったスワップクラスをC#で作る・・・。Swap.csは、クラス名の後にを付けるだけで&ltT>が汎用…

属性

C#

属性は、自作のメソッドやクラスに、既定または独自の機能や情報を付加する仕組み・・・。今回は、自作のメソッドにConditionalAttributeを付ける・・・。ConditionalAttribute クラス (System.Diagnostics)ConditionalAttributeは、前回のような条件付きコ…

#defineディレクティブ

C#

#defineディレクティブは、シンボルを定義するときに使う・・・。 ファイルの先頭にしか定義できない・・・。(コメントとかぐらいは上にあっても大丈夫みたい・・・。usingとかよりは上・・・。)最初に、 // 名前空間の登録 using System; // 共通データ型と…

#ifディレクティブ

C#

C#にもプリプロセスがある・・・。 #ifディレクティブは、指定されたシンボルが定義されているときに、#endifまでのプログラムがコンパイル対象となる・・・。 C言語やC++と違い、マクロの定義ができないので、マクロの値ではなく、シンボルが定義されている…

#if文

#if文は、プリプロセッサディレクティブのひとつで、指定されたマクロの値が真(true)の時、#endifまでのプログラムが有効となりコンパイル対象となる・・・。 偽(false)の時は、コンパイル対象にならないので、実行もされない・・・。 つまり、コメントアウ…

#define文

#define文は、プリプロセッサディレクティブのひとつで、プログラム中の指定した文字列を別の文字列に置換する・・・。 こういうのをマクロといい、さまざまなマクロを#define文で定義できる・・・。今回は数値と文字列の定数マクロを定義する・・・。INT_TE…

event

C#

delegate型変数をクラスのメンバフィールドに用意しておけば、コールバック関数を実装できる・・・。 ただ、publicでdelegate型変数を公開すると、直接的に中の関数を実行されてしまう・・・。 かといって、privateにすると、実行するハンドラ関数を登録でき…

WebSettings.getUserAgentString

WebSettingsのgetUserAgentStringでユーザエージェント文字列を取得できる・・・。WebSettings | Android Developersメニューアイテムの切り替えを前回やったので、メニューでユーザエージェントの切り替えができるようにする・・・。main.xmlは、menu_chang…

Activity.onPrepareOptionsMenu

onPrepareOptionsMenuは、メニューボタン(3点リーダアイコンの)が押された時に発生するハンドラで、メニュー表示前の準備段階の処理を行える・・・。Activity | Android Developers最初のアイテムの選択によって以降のメニューアイテムの表示/非表示切り替え…

マルチキャストデリゲート

C#

デリゲートには、複数のメソッドを登録できる・・・。 これをマルチキャストデリゲートという・・・。デリゲートの追加は、 <デリゲート変数> += new <デリゲート名>(<実行するメソッド>) +演算子や+=演算子を使える・・・。 逆に削除は、 <デリゲート変数> …

delegate

C#

デリゲートは、簡単に言うとメソッドを格納する特殊なオブジェクトで、C言語の関数ポインタ、C++の関数オブジェクトのようなもの・・・。 delegate <戻り値型> <デリゲート名>(<引数型> <引数名>); delegateをつけることで、このような引数型と戻り値型のメ…

WebSettings.setUserAgentString

WebSettingsのsetUserAgentStringで独自のユーザエージェント文字列を設定できる・・・。WebSettings | Android DevelopersPCサイトブラウザモードを実装するのに使う・・・。PC版Chromeのユーザエージェント文字列を、Google Chrome-49.0.2623.87でのUser A…

WebSettings.setJavaScriptEnabled

WebSettingsのsetJavaScriptEnabledでJavaScriptを有効にできる・・・。WebSettings | Android Developers現状、こんな警告が出ているので、いい加減JavaScriptを有効にする・・・。MainActivity.javaで、onCreateで、webView.getSettingsでwebSettingsを取…

SslErrorHandler.cancel

onReceivedSslErrorが発生し、ユーザがロードをキャンセルしたい場合は、SslErrorHandler.cancelを使う・・・。SslErrorHandler | Android DevelopersCustomWebViewClient.javaで、ポジティブボタンの"Proceed"に加えて、ネガティブボタンの"Cancel"も追加・…

SslErrorHandler.proceed

onReceivedSslErrorで、SSLエラーを拾えるのはわかったが、そのままだとページを表示できない・・・。 ユーザの許可を得て、ロードを薦めるには、SslErrorHandler.proceedを使う・・・。SslErrorHandler | Android Developers今回はダイアログを表示し、Proc…

WebSettings

WebSettingsは、WebViewのさまざまな設定を持つクラス・・・。WebSettings | Android Developersとりあえずユーザエージェントを取得してみる・・・。onPageFinishedで、view.getSettingsでwebSettingsを取得・・・。 webSettings.getUserAgentStringでユー…

WebViewClient.onReceivedSslError

onReceivedSslErrorは、SSLエラーが発生した時のハンドラ・・・。WebViewClient | Android DevelopersSSLエラーは普通のエラーと違って、こちらに来るらしい・・・。CustomWebViewClient.javaで、 // エラーが発生した時. @Override public void onReceivedE…

WebViewClient.onReceivedError

onReceivedErrorは、エラーが発生した時のハンドラ・・・。WebViewClient | Android Developersエラーが発生した時には、エラーページへ遷移し、トーストでエラーコードと説明を表示してみる・・・。assetsフォルダの下にerror.htmlというファイルを作成し、…

WebChromeClient.onProgressChanged

onProgressChangedは、ロードの進捗の変化があった時に発生するハンドラ・・・。WebChromeClient | Android Developers今回はプログレスバーで進捗を表示する・・・。activity_main.xmlに、ProgressBarを追加・・・。CustomWebViewClient.javaで、コンストラ…

WebViewClient.onPageFinished

onPageFinishedは、ページのロードが終了した時のハンドラ・・・。WebViewClient | Android Developersこれまで、TextViewのprogressTextViewで進捗を表示していたが、ロードしていない時は非表示、ロードを開始してからは表示状態にして、ロードが完了した…

WebViewClient.onPageStarted

onPageStartedは、ページのロードが開始された時のハンドラ・・・。WebViewClient | Android DevelopersshouldOverrideUrlLoadingだと、バックキーで戻って来た時に呼ばれないことがあるので、こちらでURLの更新をする・・・。CustomWebViewClient.javaで、s…

Activity.onBackPressed

バックキーでもgoBackで戻れるようにしたいが、そのためにはバックキーが押された時の動作を変えないといけない・・・。Activity | Android DevelopersonBackPressedをオーバーライドして、バックキーの動作を変える・・・。MainActivity.javaで、canGoBack…

WebView.canGoBack

canGoBackは、goBackで前のページに戻れるかどうかをチェックする・・・。WebView | Android Developers当然、1つ目のページからさらに前に戻ることはできないので、トーストで"戻れません!"と表示してみる・・・。MainActivity.javaで、webView.canGoBackが…

WebView.goBack

goBackで一つ前のページに戻ることができる・・・。WebView | Android Developersresの下にmenuフォルダつくって、その下にmain.xmlを用意し、今回はメニューにgoBackのアイテムを追加・・・。strings.xmlは、"GoBack"と表示されるアイテム・・・。MainActiv…

pipe

pipeは、プロセス間通信に使う名前なしパイプを生成するシステムコール・・・。Man page of PIPE引数には要素数2のint型配列を渡す・・・。0番目が読み込み用、1番目が書き込み用に使われる・・・。 主に、親プロセスと子プロセスの間でのプロセス間通信に使…

インデクサ

C#

インデクサは、プロパティを拡張したようなもので、オブジェクトのメンバに配列のような添字でアクセスできる・・・。 さらに、プロパティと同じく、getとsetでアクセス制限もできる・・・。 オブジェクトの中に、配列やリストのようなコレクションをメンバ…

usingステートメント

C#

これまで、Disposeによるリソース解放は、finallyで手動で行うような形になっていた・・・。 usingステートメントを使うと、IDisposableインターフェイス実装オブジェクトについては、finallyがなくても自動でリソース解放してくれる・・・。CustomReader.cs…

IDisposable

IDisposableは、割り当てられたアンマネージドリソースを解放する機構を実装するためのインターフェイス・・・。IDisposable インターフェイス (System)リソースを明示的に解放しないといけないクラスにDisposeメソッドを実装し、この中で解放処理を実行する…

finally

C#

finallyは、tryブロックの中で例外が発生しても発生しなくても実行すべき処理を書く場所・・・。 今回は、2つのファイルを連続して読み込んで内容を出力・・・。 2つ目で例外が発生しても、1つ目のファイルを閉じる処理は実行するような形にする・・・。 Mai…

move(utility)

C++

代入は、実質的にはオブジェクトのコピーである・・・。 obj = func(); // funcは右辺値なので一時オブジェクトをobjにコピーすることになる. 例えば、上のような場合にobjやfunc()の戻り値がint型ならまだしも、これが大きなクラスオブジェクトのコピーとな…

右辺値参照

C++

C++11では、右辺に置かれる定数リテラルや文字列リテラル、オブジェクトのコンストラクタや関数などは、右辺値と呼ぶ・・・。 一方、左辺に置かれる変数やオブジェクト、ポインタなどは左辺値と呼ぶ・・・。そして、C++03以前では単に「参照」と呼ばれていた…

代入演算子のオーバーロード

C++

コピーコンストラクタの項で、「オブジェクトの代入は、コピーではあるがコピーコンストラクタの対象外で、この場合コピー代入演算子のオーバーロードが必要」ということを書いた・・・。 このオブジェクトの代入の場合も、アドレスのコピーをしないようにコ…