如题.

解决方案 »

  1.   

    来自沪上傅远山的致意([email protected]):
    是不是可以用API:
    CreateToolhelp32Snapshot
    Process32First
      

  2.   

    findwindow
    getwindowtext
    getwindow相关的函数楼主自己试一下
      

  3.   

    用CreateMetux:
      MutexHandle:= CreateMutex(nil, true, '窗体名');
      if MutexHandle <> 0 then
          if GetLastError = ERROR_ALREADY_EXISTS then
          begin
             Showmessage('程序已经启动!');
             CloseHandle(MutexHandle);
             Halt;
          end;
      

  4.   

    指的是别人的程序吗?
    简单些就用进程遍历,定时来扫描一下。
    也可以hookcreateprocess等api。
      

  5.   

    findwindow(nil,'标题名称') 旧可以了,看有没有启动呀
      

  6.   

    可以使用wmi, 可以监视所有打开的进程.给个VB下的例子.
    Private Sub Command1_Click()    Dim s, System, item    Dim i As Integer
        Set System = GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")    For Each item In System        'List1.AddItem item.cputype        s = "Computer Info" & vbCrLf        s = s & "***********************" & vbCrLf        s = s & "计算机名称: " & item.name & vbCrLf
            s = s & "状态: " & item.Status & vbCrLf
            s = s & "类型: " & item.SystemType & vbCrLf
            s = s & "生产厂家: " & item.Manufacturer & vbCrLf
            s = s & "型号: " & item.Model & vbCrLf
            s = s & "内存: ~" & item.totalPhysicalMemory \ 1024000 & "mb" & vbCrLf
            s = s & "域: " & item.domain & vbCrLf
            's = s & "工作组" & item.Workgroup & vbCrLf '获得工作组和域的选项不能同时用 
            s = s & "当前用户: " & item.username & vbCrLf
            s = s & "启动状态" & item.BootupState & vbCrLf
            s = s & "该计算机属于" & item.PrimaryOwnerName & vbCrLf
            s = s & "系统类型" & item.CreationClassName & vbCrLf
            s = s & "计算机类类型" & item.Description & vbCrLf        For i = 0 To 1  '这里假设安装了两个系统 
                s = s & Chr(5) & "启动选项" & i & " :" & item.SystemStartupOptions(i) _ 
                    & vbCrLf 
            Next i 
        Next
        Text1.Text = s 
    End Sub