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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.66125 の関連記事表示

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

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

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

    何か良い方法はないでしょうか。
    よろしくお願いします。
親記事 /過去ログ111より / 関連記事表示
削除チェック/

■66145  Re[1]: Compact Framework での2重起動の防止+起動
□投稿者/ shu -(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を判断するとよいです。
記事No.66125 のレス /過去ログ111より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -