Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Chương trình liệt kê các process của windows. Giúp mình sửa lỗi?

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    83

    Question Chương trình liệt kê các process của windows. Giúp mình sửa lỗi?

    Mình xài VS 2008, mình đang muốn viết 1 ctrình show all process, tham khảo ở đây http://msdn.microsoft.com/en-us/library/ms686701(VS.85).aspx, mình trích ra thành code mình như sau :

    Visual C++ Code:
    1. // new.cpp : Defines the entry point for the application.
    2. //
    3.  
    4. #include "stdafx.h"
    5. #include "new.h"
    6. #include <windows.h>
    7. #include <tlhelp32.h>
    8. #include <tchar.h>
    9. #include <stdio.h>
    10.  
    11. void printError( TCHAR* msg );
    12. BOOL GetProcessList( );
    13.  
    14. int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine, int       nCmdShow)
    15. {
    16.     GetProcessList( );
    17. }
    18.  
    19. BOOL GetProcessList( )
    20. {
    21.   HANDLE hProcessSnap;
    22.   HANDLE hProcess;
    23.   PROCESSENTRY32 pe32;
    24.   DWORD dwPriorityClass;
    25.  
    26.   // Take a snapshot of all processes in the system.
    27.   hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
    28.   if( hProcessSnap == INVALID_HANDLE_VALUE )
    29.   {
    30.     printError( TEXT("CreateToolhelp32Snapshot (of processes)") );
    31.     return( FALSE );
    32.   }
    33.  
    34.   // Set the size of the structure before using it.
    35.   pe32.dwSize = sizeof( PROCESSENTRY32 );
    36.  
    37.   // Retrieve information about the first process,
    38.   // and exit if unsuccessful
    39.   if( !Process32First( hProcessSnap, &pe32 ) )
    40.   {
    41.     printError( TEXT("Process32First") ); // show cause of failure
    42.     CloseHandle( hProcessSnap );          // clean the snapshot object
    43.     return( FALSE );
    44.   }
    45.  
    46.   // Now walk the snapshot of processes, and
    47.   // display information about each process in turn
    48.   do
    49.   {
    50.     printf( "\n\n=====================================================" );
    51.     _tprintf( TEXT("\nPROCESS NAME:  %s"), pe32.szExeFile );
    52.     printf( "\n-----------------------------------------------------" );
    53.  
    54.     // Retrieve the priority class.
    55.     dwPriorityClass = 0;
    56.     hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
    57.     if( hProcess == NULL )
    58.       printError( TEXT("OpenProcess") );
    59.     else
    60.     {
    61.       dwPriorityClass = GetPriorityClass( hProcess );
    62.       if( !dwPriorityClass )
    63.         printError( TEXT("GetPriorityClass") );
    64.       CloseHandle( hProcess );
    65.     }
    66.  
    67.     printf( "\n  Process ID        = 0x%08X", pe32.th32ProcessID );
    68.     printf( "\n  Thread count      = %d",   pe32.cntThreads );
    69.     printf( "\n  Parent process ID = 0x%08X", pe32.th32ParentProcessID );
    70.     printf( "\n  Priority base     = %d", pe32.pcPriClassBase );
    71.     if( dwPriorityClass )
    72.       printf( "\n  Priority class    = %d", dwPriorityClass );
    73.  
    74.     // List the modules and threads associated with this process
    75.     //ListProcessModules( pe32.th32ProcessID );
    76.     //ListProcessThreads( pe32.th32ProcessID );
    77.  
    78.   } while( Process32Next( hProcessSnap, &pe32 ) );
    79.  
    80.   CloseHandle( hProcessSnap );
    81.   return( TRUE );
    82. }
    83.  
    84.  
    85. void printError( TCHAR* msg )
    86. {
    87.   DWORD eNum;
    88.   TCHAR sysMsg[256];
    89.   TCHAR* p;
    90.  
    91.   eNum = GetLastError( );
    92.   FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
    93.          NULL, eNum,
    94.          MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    95.          sysMsg, 256, NULL );
    96.  
    97.   // Trim the end of the line and terminate it with a null
    98.   p = sysMsg;
    99.   while( ( *p > 31 ) || ( *p == 9 ) )
    100.     ++p;
    101.   do { *p-- = 0; } while( ( p >= sysMsg ) &&
    102.                           ( ( *p == '.' ) || ( *p < 33 ) ) );
    103.  
    104.   // Display the message
    105.   _tprintf( TEXT("\n  WARNING: %s failed with error %d (%s)"), msg, eNum, sysMsg );
    106. }

    Khi compile thì nó báo như sau :

    Output Code:
    1. 'new.exe': Loaded 'C:\Documents and Settings\vietnc.SO\My Documents\Visual Studio 2008\Projects\new\Debug\new.exe', Symbols loaded.
    2. 'new.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'
    3. 'new.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'
    4. 'new.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll', Symbols loaded.
    5. 'new.exe': Loaded 'C:\WINDOWS\system32\EntAPI.dll'
    6. 'new.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll'
    7. 'new.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll'
    8. 'new.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll'
    9. 'new.exe': Loaded 'C:\WINDOWS\system32\psapi.dll'
    10. 'new.exe': Loaded 'C:\WINDOWS\system32\netapi32.dll'
    11. 'new.exe': Unloaded 'C:\WINDOWS\system32\EntAPI.dll'
    12. 'new.exe': Unloaded 'C:\WINDOWS\system32\netapi32.dll'
    13. 'new.exe': Unloaded 'C:\WINDOWS\system32\psapi.dll'
    14. 'new.exe': Unloaded 'C:\WINDOWS\system32\advapi32.dll'
    15. 'new.exe': Unloaded 'C:\WINDOWS\system32\rpcrt4.dll'
    16. 'new.exe': Unloaded 'C:\WINDOWS\system32\msvcrt.dll'
    17. The program '[4224] new.exe: Native' has exited with code 1 (0x1).

    Ai biết cách fix giúp mình với

    Thanx

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Cái này không phải là lỗi gì cả. Bạn phải tạo ứng dụng dạng console thì hàm printf mới in ra được, ứng dụng win32 thì sao mà hàm printf in ra được.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    83

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Cái này không phải là lỗi gì cả. Bạn phải tạo ứng dụng dạng console thì hàm printf mới in ra được, ứng dụng win32 thì sao mà hàm printf in ra được.
    Ok để mình thử

    Thân,

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Cái này không phải là lỗi gì cả. Bạn phải tạo ứng dụng dạng console thì hàm printf mới in ra được, ứng dụng win32 thì sao mà hàm printf in ra được.
    được roài, thanx bạn meoconlongvangnhìu
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 28-05-2009 lúc 01:16 AM. Lý do: Cảnh cáo spam bài viết!

Các đề tài tương tự

  1. Lấy đệ quy các process con trên windows
    Gửi bởi clone trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 0
    Bài viết cuối: 09-12-2013, 06:29 PM
  2. Làm thế nào để monitor windows process?
    Gửi bởi Hok_bik_zi trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 4
    Bài viết cuối: 26-09-2013, 10:21 PM
  3. Trả lời: 2
    Bài viết cuối: 19-10-2012, 04:20 PM
  4. Hỏi cách gọi Windows Process để mở ứng dụng Windows Media Player.
    Gửi bởi itc trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 07-05-2012, 10:50 AM
  5. Tại sao firewall windows & các chương trình antivirus không cho phép start 1 process.
    Gửi bởi gianghotinhyeu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 23-08-2011, 11:51 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn