(一)helloworld

       }else

        
Name:用于指向主机名缓冲区的指针,namelen: 缓冲区的大小。

题目1:Windows进程的创建与销毁

更新时间:2017-10-26

内容及要求:


掌握Windows进程的创建和销毁API的调用方法;编程代码,在程序中创建和销毁一个Word进程;

② 能够挂起和激活被创建进程的主线程;

③ 通过Windows进程管理器查看系统进程列表的变化。

实验指导:

①创建进程的API

BOOL CreateProcess(

  LPCTSTR lpApplicationName,

  LPTSTR lpCommandLine,

  LPSECURITY_ATTRIBUTES lpProcessAttributes,

  LPSECURITY_ATTRIBUTES lpThreadAttributes,

  BOOL bInheritHandles,

  DWORD dwCreationFlags,

  LPVOID lpEnvironment,

  LPCTSTR lpCurrentDirectory,

  LPSTARTUPINFO lpStartupInfo,

  LPPROCESS_INFORMATION lpProcessInformation

);

例程:

 1 void main( VOID ){
 2     STARTUPINFO si;
 3     PROCESS_INFORMATION pi;
 4     ZeroMemory( &si, sizeof(si) );
 5     si.cb = sizeof(si);
 6     ZeroMemory( &pi, sizeof(pi) );
 7     // Start the child process. 
 8     if( !CreateProcess( NULL, // No module name (use command line). 
 9         "MyChildProcess", // Command line. 
10         NULL,             // Process handle not inheritable. 
11         NULL,             // Thread handle not inheritable. 
12         FALSE,            // Set handle inheritance to FALSE. 
13         0,                // No creation flags. 
14         NULL,             // Use parent's environment block. 
15         NULL,             // Use parent's starting directory. 
16         &si,              // Pointer to STARTUPINFO structure.
17         &pi )             // Pointer to PROCESS_INFORMATION structure.
18         ) {
19             ErrorExit( "CreateProcess failed." );
20     }
21     // Wait until child process exits.
22     WaitForSingleObject( pi.hProcess, INFINITE );
23     // Close process and thread handles. 
24     CloseHandle( pi.hProcess );
25     CloseHandle( pi.hThread );
26 }

销毁进程API

BOOL TerminateProcess(

  HANDLE hProcess,

  UINT uExitCode

);

③ 挂起进程的主线程API

DWORD SuspendThread(

  HANDLE hThread

);

④激活进程的主线程API

DWORD ResumeThread(

  HANDLE hThread

);

⑤进程查看器

1 #include<iostream> 2 #include<windows.h> 3 using
namespace std; 4 void main( VOID ) 5 { 6 STARTUPINFO si; 7
PROCESS_INFORMATION pi; 8 /** 9 * 这里填个人的word可执行文件的路径
10 * ps:””需要进行转义 11 **/ 12 TCHAR
szCommandLine[]=TEXT(“D:\Microsoft
Office\Office14\WINWORD.EXE”); 13 ZeroMemory(&si, sizeof(si) ); 14
si.cb= sizeof(si); 15 ZeroMemory(&pi, sizeof(pi) ); 16
if(!CreateProcess( NULL, szCommandLine, NULL,NULL, FALSE,0,NULL,
NULL,&si,&pi ) ) 17 { 18 fprintf(stderr,”进程创建失败!”); 19 } 20 int
x; 21 while(1) 22 { 23 cout <<
“请输入要选择的操作:n1:创建进程n2:销毁进程n3:挂起进程n4:激活进程n0:退出n”;
24 cin >> x; 25 switch(x) 26 { 27 case 1: 28 if(CreateProcess(
NULL, szCommandLine, NULL,NULL, FALSE,0,NULL, NULL,&si,&pi ) ) 29
fprintf(stderr,”进程创建成功!”); 30 else 31 cout <<
“进程创建失败!”<<endl; 32 break; 33 case 2: 34
if(TerminateProcess(pi.hProcess,0)) 35
cout<<“销毁进程成功”<<endl; 36 else 37
cout<<“销毁失败!”<<endl; 38 break; 39 case 3: 40
if(SuspendThread(pi.hThread)) 41 cout<<“挂起进程成功”<<endl;
42 else 43 cout<<“挂起失败”<<endl; 44 break; 45 case 4: 46
if(ResumeThread(pi.hThread)) 47 cout<<“激活进程成功”<<endl;
48 else 49 cout<<“激活失败”<<endl; 50 break; 51 case 0: 52
exit(0); 53 default: 54 cout<<“输入有误不正确”<<endl; 55 }
56 } 57 }

 

持续更新中!!!

 

作者:耑新新,发布于  博客园

转载请注明出处,欢迎邮件交流:[email protected]

操作系统是计算机相关专业的一门极其重要的专业课,但实验课的时候很多人不知道代码应…

     欢迎来到windows编程的世界,先给我们的windows打个招呼吧:

    char buf[255];

操作系统实验及代码(全),操作系统实验代码

操作系统是计算机相关专业的一门极其重要的专业课,但实验课的时候很多人不知道代码应该怎么写,这里贴出博主使用过的一部分,亲测可行。 

{

    int listen_port = 8999;

int  main()

        }

   所谓windows编程就是指通过调用Windows
API来和操作系统交互的编程方式。API就是与操作系统交互的各种功能函数,MessageBox就是一个API,调用它就可以弹出一个对话框。

using namespace std;

              *cout<<“you select ok “<<endl*;

        cout <<“监听失败” << WSAGetLastError() << endl;

using namespace  std;

    }

       {

        cout <<“本地主机的名字是:” << buf << endl;

       if(iSelect==IDOK)

    if( listen(serverSocket,SOMAXCONN) ==
SOCKET_ERROR){

       *system*(“pause”);

    serverAddress.sin_port =
htons(listen_port);

       }

 

#include
<Windows.h>

int main(){

}

   

       return  0;

 

       int iSelect=MessageBox(NULL,TEXT(“你好,windows世界,我来了!”),TEXT(“你好,世界”),MB_OKCANCEL);

         WSAStartup函数完成对Winsock服务的初始化,因此需要调用WSAStartup函数。使用Socket程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数表示程序请求使用的Socket版本,高字节表示副版本,低字节表示主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数的时候,操作系统根据请求的Socket版本来搜索响应的Socket库,绑定到Socket库到应用程序中。在之后的程序中可以调用Socket库中的其他的socket函数。

              *cout<<“you select cancel”<<endl*;

         int WSAStartup(WORD wVersionRequest,
LPWSADATA lpWSAData);

       {

        sockaddr_in clientAddress;

#include
<iostream>

            in_addr addr = *(in_addr*)
pht->h_addr_list[i];

    if(pht==NULL){

    }

    if(pht==NULL){

        exit(-1);

        //cout << AF_INET <<
endl;

    WSACleanup();// 完成清理工作

using namespace std;

                  
wVersionRequest: 一个双字节数值, 使用MAKEWORD(2,2)生成;

}

int main(){

        exit(-1);

        int addrlen = sizeof(clientAddress);

        }else{

         WSAStartup是Windows SockNDs Asynchronous(Windows 异步套接字) 的启动命令, windows下的网络编程软件Winsock1,
Winsock2的一个命令。

    WSADATA wsa ;//
WSADATA 结构是用来保存函数WSAStartup 返回的Windows
socket初始化信息

    }else{

        cout << “获取本地主机的Name失败:”<<WSAGetLastError()<< SOCKET_ERROR <<
endl;

 

        cout << WSAGetLastError() <<
endl;

        cout << “套接字初始化成功” << endl;

        for(int i = 0; pht->h_addr_list[i] !=
NULL;i++){

    if(WSAStartup(MAKEWORD(2,1),&wsa) != 0){

 

    }

         参数介绍:

 

        cout << “h_length:” <<
pht->h_length << endl;

 

    return 0;

 

    if( gethostname(buf,sizeof(buf)) ==
SOCKET_ERROR  ){

    }else{

        Sleep(3000);

            cout << “接受来自” << inet_ntoa(clientAddress.sin_addr)
<<“的连接”<< endl;

        cout << “创建套接字失败” << endl;

                   lpWSAData: 指向一个WSADATA的数据结构的指针,用于接收Windows Sockets实现的细节。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website