Const MAX_PATH As Long = 260Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwflags As Long szexeFile As String * MAX_PATHEnd TypePrivate Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As _ Long, lpdwProcessId As Long) As LongPrivate Declare Function CreateToolhelpSnapshot Lib "Kernel32" Alias _ "CreateToolhelp32Snapshot" (ByVal lFlgas As Long, ByVal lProcessID As Long) _ As LongPrivate Declare Function ProcessFirst Lib "Kernel32" Alias "Process32First" _ (ByVal hSnapshot As Long, procEntry As PROCESSENTRY32) As LongPrivate Declare Function ProcessNext Lib "Kernel32" Alias "Process32Next" _ (ByVal hSnapshot As Long, procEntry As PROCESSENTRY32) As LongPrivate Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)' Get the name of the process that created a window'' Works only on Win9x and 2000 (no Windows NT, sorry)Function ExeNameFromWindow(ByVal hWnd As Long) As String Dim threadID As Long Dim processID As Long Dim hSnapshot As Long Dim procEntry As PROCESSENTRY32 Dim success As Long Dim i As Integer Const TH32CS_SNAPPROCESS As Long = 2& ' get a snapshot of running processes, exit if error hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) If hSnapshot = -1 Then Exit Function ' Get ID for window thread, exit if not valid threadID = GetWindowThreadProcessId(hWnd, processID) If threadID = 0 Or processID = 0 Then Exit Function ' we must initialize first DWord of structure with its size procEntry.dwSize = Len(procEntry) ' get info on first process success = ProcessFirst(hSnapshot, procEntry) Do While success If procEntry.th32ProcessID = processID Then ' we found it, read name of executable and bail out of the loop ExeNameFromWindow = Left$(procEntry.szexeFile, _ InStr(procEntry.szexeFile & vbNullChar, vbNullChar) - 1) Exit Do End If ' otherwise, continue the search success = ProcessNext(hSnapshot, procEntry) Loop ' in all cases, close the shapshot handle CloseHandle hSnapshot End Function


GM Creates Open Source uProtocol and Invites Automakers to Adopt It: Revolutionizing Automotive Software Development.
General Motors (GM) recently announced its entry into the Eclipse Foundation. The Eclipse Foundation is a prominent open-source software foundation. In addition, GMC announced its contribution of “uProtocol” to facilitate