LoginSignup
0
0

TCPコネクションとプロセス一覧取得するVC++, .NETライブラリ

Last updated at Posted at 2023-04-18

利用するメリット

.NET から WinAPI を直接使う場合, マーシャルが必要で, さらにプロセス名を得るには 2種類の API関数を呼び出す必要があるし, 呼び出したメンバも, どこでメモリ解放するかについて考える必要があるが

これを使えば マーシャル不要, 1回のインスタンス生成で済む, 解放は Dispose だけでよい。

動作

agggaaaher.png

こんな感じに, netstat を実行した場合にえられる

ローカルIP・ポート、リモートIPポート、プロセスID(PID)

にくわえて、さらに

プロセス名(日本語プロセス名対応)

も含んだ構造体をえることができます。

使用する Lib, DLL 「mynetstat」

マルウェアが怖い方は、 vector からインストールください。

呼び出しコード

VC++, C#, VB.NET から呼び出せる

VC++

	TCPCpp* ins;
	TCPROW* row = NULL;

		ins = new TCPCpp();
		row = (*ins).getstat();
		
		
	for (int i = 0; i < row.size[0]; j++){
		
	cout << row[i].LocalAddr << row[i].LocalPort <<
         row[i].RemoteAddr << row[i].RemotePort  << row[i].PID;	
	setlocale(LC_ALL, "japanese"); wcout << row[i].ProcessName; 
	cout << row[i].Statestr << endl;
		
	}
	
			(*ins).getstat_free(row);  //getstat をループ実行させる場合は、これをループ毎に実行
		delete ins;  

VB.NET

	        Dim ins As TCPNET
        Dim dat As TCPROW_NET()
        Dim str As String
            ins = New TCPNET
            dat = ins.getstat()

            For i = 0 To dat(0).size - 1
                str = str & dat(i).LocalAddr & " " & dat(i).LocalPort &
              " " & dat(i).RemoteAddr & " " & dat(i).RemotePort & " " &_
                dat(i).PID & " " & dat(i).ProcessName & " " & dat(i).Statestr & ControlChars.NewLine
            Next i

            ins.Dispose()

C#

            TCPNET ins;
             TCPROW_NET[] dat;

                 ins = new TCPNET();
                 dat = ins.getstat();

            for( int i=0; i <dat[0].size;i++){

  str = str + dat[i].LocalAddr+" " + dat[i].LocalPort+" " 
+dat[i].RemoteAddr+" " +dat[i].RemotePort+" " +dat[i].PID+
" " +dat[i].ProcessName + " " + 
  dat[i].Statestr+ "\r\n" ;

            }
                 ins.Dispose();

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0