ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для копирования ΠΈ сравнСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ приостановки процСссов, Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии процСссов (Π°Π½Π°Π»ΠΎΠ³ Task Manager Windows)

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

BFound = GetVolumeInformation (str, szVolInfo, MAX_BUFFER, NULL, NULL, NULL, NULL, NULL); Π’Ρ‹Π²ΠΎΠ΄: BOOL — Π‘Ρ‹Π»Π° Π»ΠΈ опСрация ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’Ρ‹Π²ΠΎΠ΄: BOOL — Π‘Ρ‹Π»Π° Π»ΠΈ опСрация ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚. AfxMessageBox («Π’Ρ‹ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ процСсс ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.»); ЦСль: ВСстируСт Ссли ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ диск Π³ΠΎΡ‚ΠΎΠ². FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER-FORMAT_MESSAGE_FROM_SYSTEM,. FormatMessage… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для копирования ΠΈ сравнСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ приостановки процСссов, Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии процСссов (Π°Π½Π°Π»ΠΎΠ³ Task Manager Windows) (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1. Анализ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ
  • 2. ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ
  • 3. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
    • 3. 1. CChooseDirDlg
    • 3. 2. CCProcess
    • 3. 3. CDirectoryTree
    • 3. 4. CDriveCombo
    • 3. 5. CMultithreadDlg
  • 4. Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
    • 4. 1. — Π‘истСмныС трСбования
    • 4. 2. — Π˜Π½ΡΡ‚рукция ΠΏΠΎ ΠΈΠ½ΡΡ‚алляции ΠΈ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹…125. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

hProcessSnap = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);

if (hProcessSnap == INVALID_HANDLE_VALUE).

AfxMessageBox («Error for takes all processes»);

// Fill in the size of the structure before using it.

process=TRUE; stream=FALSE;

pe32.dwSize = sizeof (PROCESSENTRY32);

// Walk the snapshot of the processes, and for each process,.

// display information.

CListCtrl * listctrl = (CListCtrl*)GetDlgItem (IDC_LIST2);

//m_listctrl.DeleteAllItems ();

//m_listctrl.GetClientRect (&rect);

if (Process32First (hProcessSnap, &pe32)).

{.

do.

{.

if (pr_Id ≠ pe32. th32ProcessID).

{.

sprintf (str2," %s", pe32. szExeFile);

listctrl->InsertItem (i, str2);

sprintf (str2," %u", pe32. th32ProcessID);

listctrl->SetItemText (i, 1, str2);

sprintf (str2," %u", pe32. th32DefaultHeapID);

listctrl->SetItemText (i, 2, str2);

sprintf (str2," %u", pe32. cntUsage);

listctrl->SetItemText (i, 3, str2);

sprintf (str2," %u", pe32. th32ModuleID);

listctrl->SetItemText (i, 4, str2);

sprintf (str2," %u", pe32. cntThreads);

listctrl->SetItemText (i, 5, str2);

sprintf (str2," %u", pe32. th32ParentProcessID);

listctrl->SetItemText (i, 6, str2);

sprintf (str2," %u", pe32. pcPriClassBase);

listctrl->SetItemText (i, 7, str2);

i++;

}.

}.

while (Process32Next (hProcessSnap, &pe32));

bRet = TRUE;

}.

else.

bRet = FALSE; // could not walk the list of processes.

// Do not forget to clean up the snapshot object.

CloseHandle (hProcessSnap);

}.

//рСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… с Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ.

void CCProcess: DoDataExchange (CDataExchange* pDX).

{.

CDialog:DoDataExchange (pDX);

//{{AFX_DATA_MAP (CCProcess).

DDX_Control (pDX, IDC_LIST2, m_listctrl);

//}}AFX_DATA_MAP.

}.

BEGIN_MESSAGE_MAP (CCProcess, CDialog).

//{{AFX_MSG_MAP (CCProcess).

ON_BN_CLICKED (IDC_Thread, OnKillProcess).

ON_BN_CLICKED (IDEXIT, OnRefresh).

//}}AFX_MSG_MAP.

END_MESSAGE_MAP ().

// Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ процСсс.

void CCProcess: OnKillProcess ().

{.

CListCtrl * listctrl = (CListCtrl*)GetDlgItem (IDC_LIST2);

int iItem= listctrl->GetNextItem (-1,LVNI_SELECTED);

int item_count=0;

pr_Id = -1;

while (iItem≠-1).

{.

item_count++;

iItem = listctrl->GetNextItem (iItem, LVNI_SELECTED);

}.

if (item_count≠0).

{.

for (int i=0;iGetItemCount ();i++).

{.

if (listctrl->GetItemState (i, LVIS_SELECTED)&LVIS_SELECTED).

{.

int Response =.

MessageBox («Π’Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ этот процСсс» .

" «,.

" ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅" ,.

MB_OKCANCEL-MB_ICONASTERISK);

if (Response == IDOK).

{.

char strLong[90];

sprintf (strLong," %s", listctrl->GetItemText (i, 1));

long lVar = 0;

lVar = strtol (strLong, NULL, 10);

HANDLE hHandle;

DWORD dwExitCode = 0;

hHandle = :OpenProcess (PROCESS_ALL_ACCESS, 0, lVar);

:GetExitCodeProcess (hHandle,&dwExitCode);

:TerminateProcess (hHandle, dwExitCode);

pr_Id = lVar;

break;

}.

}.

}.

}.

else.

AfxMessageBox («Π’Ρ‹ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ процСсс ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.»);

listctrl->DeleteAllItems ();

OnCreateToolhelp32Snapshot ();

UpdateData (TRUE);

}.

void CCProcess: OnRefresh ().

{.

CListCtrl * listctrl = (CListCtrl*)GetDlgItem (IDC_LIST2);

listctrl->DeleteAllItems ();

OnCreateToolhelp32Snapshot ();

UpdateData (TRUE);

}.

#include «stdafx.h» .

#include «DriveCombo.h» .

#ifdef _DEBUG.

#define new DEBUG_NEW.

#undef THIS_FILE.

static char THIS_FILE[] = __FILE__;

#endif.

// Definitions.

#define MAX_BUFFER 1024 // Maximum buffer size.

// CDriveCombo.

CDriveCombo:CDriveCombo ().

{.

}.

CDriveCombo:~CDriveCombo ().

{.

}.

BEGIN_MESSAGE_MAP (CDriveCombo, CComboBox).

//{{AFX_MSG_MAP (CDriveCombo).

//}}AFX_MSG_MAP.

END_MESSAGE_MAP ().

// CDriveCombo message handlers.

/****************************************************************************.

Ѐункция: Initialize ().

Ρ†Π΅Π»ΡŒ: Π§ΠΈΡ‚Π°Π΅Ρ‚ диски Π² ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся сам ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΈΠΌΠΈ.

Π’Π²ΠΎΠ΄: None.

Π’Ρ‹Π²ΠΎΠ΄: BOOL — Π‘Ρ‹Π»Π° Π»ΠΈ опСрация ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

****************************************************************************/.

BOOL CDriveCombo: Initialize ().

{.

BOOL bFound = FALSE; // Whether volume info was found or not.

DWORD dwRes = 0; // Receives the drive bitmask.

int i = 0; // Misc. counter variable.

CString str; // Used for string manipulations.

char szVolInfo[MAX_BUFFER];

char szDrives[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',.

'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',.

'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

// Get the bitmask of available drives.

dwRes = GetLogicalDrives ();

if (0 == dwRes).

{.

LPVOID lpMsgBuf;

FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER-FORMAT_MESSAGE_FROM_SYSTEM,.

NULL, GetLastError (), MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),.

(LPTSTR) &lpMsgBuf, 0, NULL);

MessageBox ((LPTSTR)lpMsgBuf, «GetLastError — GetLogicalDrives failed», MB_OK-MB_ICONERROR);

LocalFree (lpMsgBuf);

return FALSE;

}.

// Separate out each drive letter and add it to the Combo Box.

while (dwRes).

{.

if (dwRes & 1).

{.

// There’s a drive for this bit position.

str.Format («%c: «, szDrives[i]);

// Get the name of the drive, if it exists.

SetErrorMode (SEM_FAILCRITICALERRORS);

bFound = GetVolumeInformation (str, szVolInfo, MAX_BUFFER, NULL, NULL, NULL, NULL, NULL);

if (bFound).

str += szVolInfo;

// Add the drive information to the combo box.

AddString (str);

}.

dwRes >>= 1;

i++;

}.

// Get the current directory, so we know what to highlight.

dwRes = GetCurrentDirectory (MAX_BUFFER, szVolInfo);

if (0 == dwRes).

{.

LPVOID lpMsgBuf;

FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER-FORMAT_MESSAGE_FROM_SYSTEM,.

NULL, GetLastError (), MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),.

(LPTSTR) &lpMsgBuf, 0, NULL);

MessageBox ((LPTSTR)lpMsgBuf, «GetLastError — GetCurrentDirectory failed», MB_OK-MB_ICONERROR);

LocalFree (lpMsgBuf);

return FALSE;

}.

str.Format («%c», szVolInfo[0]);

i = FindString (-1, str);

SetCurSel (i);

return TRUE;

}.

/****************************************************************************.

Ѐункция: IsDriveReady ().

Ρ†Π΅Π»ΡŒ: ВСстируСт Ссли ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ диск Π³ΠΎΡ‚ΠΎΠ².

Π’Π²ΠΎΠ΄: int nIndex — Диск для тСста.

Π’Ρ‹Π²ΠΎΠ΄: BOOL — Π‘Ρ‹Π»Π° Π»ΠΈ опСрация ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

****************************************************************************/.

BOOL CDriveCombo: IsDriveReady (int nIndex).

{.

HANDLE hFile; // Handle to found file.

WIN32_FIND_DATA stFindData; // Info about the found file.

CString szDrive; // Drive letter to test.

CString szSearch; // Search string.

CString szError; // Error message.

GetLBText (nIndex, szDrive);

szSearch = szDrive. Left (1);

szSearch += «:\*.*» ;

// First, see if there’s anything in the directory.

hFile = FindFirstFile ((LPCTSTR)szSearch, &stFindData);

if (INVALID_HANDLE_VALUE == hFile).

{.

szError.Format («Drive %s: is not ready.», szDrive. Left (1));

MessageBox (szError, «Error», MB_OK-MB_ICONEXCLAMATION);

return FALSE;

}.

FindClose (hFile);

return TRUE;

}.

/****************************************************************************.

Ѐункция: ResetDrive ().

Ρ†Π΅Π»ΡŒ: ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π±ΡƒΠΊΠ²Ρƒ диска.

Π’Π²ΠΎΠ΄: char cDrive — Π±ΡƒΠΊΠ²Π° диска.

Π’Ρ‹Π²ΠΎΠ΄: Ни ΠΎΠ΄ΠΈΠ½.

****************************************************************************/.

void CDriveCombo: ResetDrive (char cDrive).

{.

CString szStr;

int nIndex = 0;

szStr.Format («%c:», cDrive);

nIndex = FindString (-1, szStr);

if (CB_ERR ≠ nIndex).

SetCurSel (nIndex);

return;

}.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ
ΠšΡƒΠΏΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ

Π˜Π›Π˜