控制台开启邮箱--C语言实现

来源:互联网 发布:2017公安部网络严打 编辑:程序博客网 时间:2024/05/17 06:06

需要用到shell32.dll里的ShellExecute函数。
代码如下:

/**********CopyRight@piaoxiang.zhang*****/#include <stdio.h>#include <string.h>#include <windows.h>typedef int (*ReadReg)(HKEY ,LPCTSTR ,LPTSTR ,PLONG ) ;typedef int (*Shell_Exec)(HWND,char *,char *,char *,char *,int);char * data_Set="mailto\\shell\\open\\command\\";  char data[128]={0};void GetNameFromString(char *s,int *L){  int len=*L,cnt,i;  char *ptr,c='"',cp='\\' ;  char *tmp =(char*)malloc(128*sizeof(char));  ptr=strchr(s,c);  i=ptr-s;  printf("ptr-s=%d\n",i);    do{       i++;     if(s[i]==c)break;     if(s[i]==cp)     {       *tmp=s[i];       tmp++;       *tmp=s[i];       tmp++;     }     else     {      *tmp=s[i];       tmp++;         }     }while(i<len);  cnt=i;  while(i>0){  }  if(i!=len)s[i]='\0';  free(tmp);}int main(int argv,char **argc){  int dataSize;  HANDLE hwnd;  HINSTANCE hLib;#if 0  hLib= LoadLibrary("advapi32.dll");  int ret=0;  if(!hLib) printf("缺少advapi32.dll\n");  ReadReg dllReadReg;  dllReadReg= (ReadReg)GetProcAddress(hLib,"RegQueryValueA");  if(!dllReadReg)printf("没有RegOpenKeyA\n");  ret=dllReadReg(HKEY_CLASSES_ROOT,data_Set,data,&dataSize);   printf("reg=%s,dataSize=%d\n",data,dataSize);  GetNameFromString(data,&dataSize)  ;  printf("after:%s\n",data) ;  //WinExec("D:\\Program Files\\Foxmail 7.2\\Foxmail.exe",SW_SHOWNORMAL);#endif  hLib= LoadLibrary("shell32.dll");  if(!hLib) printf("shell32.dll\n");  Shell_Exec dllShell_Exec;                                           dllShell_Exec=(Shell_Exec)GetProcAddress(hLib,"ShellExecuteA");  if(!dllShell_Exec)printf("没有ShellExecuteA\n");   dllShell_Exec(hwnd,"open","mailto:piaoxiang.zhang@163.com",                                          NULL,NULL,SW_SHOWNORMAL);  system("pause");  return 0;}

效果图:
这里写图片描述

0 0
原创粉丝点击