C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: Compact Framework での2重起動の防止+起動


(過去ログ 111 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■66125 / inTopicNo.1)  Compact Framework での2重起動の防止+起動
  
□投稿者/ ku-tuka (1回)-(2013/04/02(Tue) 16:46:33)

分類:[VB.NET/VB2005 以降] 

Compact Framework 3.5環境化で、2重起動防止と、起動中フォームの最前面表示を行いたいと考えています。
2重起動防止については、Mutexを用いて実装できましたが、最前面表示については、ProcessクラスのGetProcessesByNameが使えないため行き詰まっています。

何か良い方法はないでしょうか。
よろしくお願いします。

引用返信 編集キー/
■66145 / inTopicNo.2)  Re[1]: Compact Framework での2重起動の防止+起動
□投稿者/ shu (260回)-(2013/04/03(Wed) 17:01:44)
2013/04/03(Wed) 17:01:53 編集(投稿者)
No66125 ( ku-tuka さん) に返信

handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
  ↓
Process32First(handle, peBytes() as Byte)
(2順目以降は Process32Next(handle, peBytes() as Byte))
  ↓
peBytes => PROCESSENTRY32
変換ロジック例
            Dim mem As New MemoryStream(peBytes)
            Dim rd As New BinaryReader(mem)

            dwSize = rd.ReadUInt32()
            cntUsage = rd.ReadUInt32()
            th32ProcessID = rd.ReadInt32()
            th32DefaultHeapID = rd.ReadUInt32()
            th32ModuleID = rd.ReadUInt32()
            cntThreads = rd.ReadUInt32()
            th32ParentProcessID = rd.ReadInt32()
            pcPriClassBase = rd.ReadInt32()
            dwFlags = rd.ReadUInt32()
            Dim bytExeFiles = New Byte(MAX_PATH) {}
            rd.Read(bytExeFiles, 0, MAX_PATH)
            szExeFile = Encoding.Unicode.GetString(bytExeFiles, 0, MAX_PATH)
            szExeFile = szExeFile.TrimEnd(CChar(vbNullChar))
            th32MemoryBase = rd.ReadUInt32()
            th32AccessKey = rd.ReadUInt32()
            rd.Close()
  ↓
PROCESSENTRY32.szExeFileにてExeを判断

という手順でプロセスを列挙してExeを判断するとよいです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -