ShellExecute用法 以及静态文本超链接

打开一个文件 :ShellExecute(NULL, NULL, "c://mfc类库详解.chm", NULL, NULL, SW_SHOWNORMAL);

打开一个文件夹: ShellExecute(NULL, NULL, "c://", NULL, NULL, SW_SHOWNORMAL);

在资源管理器中打开: ShellExecute(NULL, "explore", "c://", NULL, NULL, SW_SHOWNORMAL);

搜索一个文件夹 : ShellExecute(NULL, "find", "c://", NULL, NULL, SW_SHOWNORMAL);

点击发邮件 :    ShellExecute(0, NULL, "mailto:koma0769@vip.qq.com", NULL,NULL, SW_NORMAL);

QQ某人:     ShellExecute(NULL,"open","tencent://Message/?Uin=345022596" ,NULL,NULL,NULL);

打开一个网址 :

 

 WinExec("C://Program Files//Internet Explorer//IEXPLORE.exe   http://www.baidu.com/", SW_SHOW);

 ShellExecute(0, "open", "http://www.baidu.com", NULL,NULL, SW_NORMAL);

 

 winexec          针对   可执行文件     shellexecute   针对   windows中的所有文件   他会找到windows登记了的对应程序打开对应文件

 

1、添加成员变量m_RectLink,用来保存文本框的坐标,添加两个静态文本控件,将默认ID改掉:

  1. class CSampleDlg : public CDialog   
  2. {   
  3. // Construction   
  4. public:   
  5.      CSampleDlg(CWnd* pParent = NULL);   // standard constructor   
  6.   
  7.     // Implementation   
  8. protected:   
  9.     HICON m_hIcon;   
  10.        
  11.     //用于保存静态文本框的屏幕坐标   
  12.      RECT m_pRectLink;     
  13.      ......   
  14. }  
  15. BOOL CSampleDlg::OnInitDialog()   
  16. {   
  17.      CDialog::OnInitDialog();   
  18.   
  19.     // Add "About..." menu item to system menu.   
  20.   
  21.     // IDM_ABOUTBOX must be in the system command range.   
  22.      ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);   
  23.      ASSERT(IDM_ABOUTBOX < 0xF000);   
  24.   
  25.      CMenu* pSysMenu = GetSystemMenu(FALSE);   
  26.     if (pSysMenu != NULL)   
  27.      {   
  28.          CString strAboutMenu;   
  29.          strAboutMenu.LoadString(IDS_ABOUTBOX);   
  30.         if (!strAboutMenu.IsEmpty())   
  31.          {   
  32.              pSysMenu->AppendMenu(MF_SEPARATOR);   
  33.              pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);   
  34.          }   
  35.      }   
  36.   
  37.     // TODO: Add extra initialization here   
  38.   
  39.     //将静态文本的屏幕坐标存放在m_pRectLink中   
  40.      GetDlgItem(IDC_LINK) -> GetWindowRect(&m_pRectLink);   
  41.     //将屏幕坐标转换为客户坐标   
  42.      ScreenToClient(&m_pRectLink);   
  43.   
  44.     return TRUE;  // return TRUE   unless you set the focus to a control   
  45. }  

3、添加Windows消息WM_MOUSEMOVE和消息处理函数,代码如下:

  1. void CSampleDlg::OnMouseMove(UINT nFlags, CPoint point)   
  2. {   
  3.     // TODO: Add your message handler code here and/or call default   
  4.     //下面设置鼠标在静态文本区时,将光标设成小手状   
  5.     if (point.x > m_pRectLink.left && point.x < m_pRectLink.right && point.y > m_pRectLink.top && point.y < m_pRectLink.bottom )   
  6.     //此处添加判断坐标算法   
  7.      {   
  8.         HCURSOR hCursor;   
  9.          hCursor = AfxGetApp() -> LoadCursor(IDC_HAND);   
  10.   
  11.         //将鼠标设为小手状      并没有成功 原因待解
  12.          SetCursor(hCursor);   
  13.      }   
  14.      CDialog::OnMouseMove(nFlags, point);   
  15. }  

4、添加Windows消息WM_LBUTTONDOWN  和消息处理函数,代码如下:

 

  1. void CSampleDlg::OnLButtonDown(UINT nFlags, CPoint point)   
  2. {   
  3.     // TODO: Add your message handler code here and/or call default   
  4.     //此处添加判断坐标算法   
  5.     if (point.x > m_pRectLink.left && point.x < m_pRectLink.right && point.y > m_pRectLink.top && point.y < m_pRectLink.bottom)   
  6.      {   
  7.         //鼠标左键按下   
  8.         if (nFlags == MK_LBUTTON)      
  9.          {   
  10.             //为改善鼠标效果,此处加入以上变换鼠标形状的代码   
  11.              ShellExecute(0, NULL, "http://hi.baidu.com/wangguang246", NULL,NULL, SW_NORMAL);   
  12.                
  13.             //也可以添加电子邮件的链接   
  14.              ShellExecute(0, NULL, "mailto:koma0769@vip.qq.com", NULL,NULL, SW_NORMAL);   
  15.          }   
  16.      }   
  17.        
  18.      CDialog::OnLButtonDown(nFlags, point);   
  19. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `ShellExecute` 是 Windows API 函数,用于在 Windows 操作系统中执行程序或文件。使用方法如下: ``` ShellExecute(NULL, "open", "C:\\Program Files\\MyProgram\\MyProgram.exe", NULL, NULL, SW_SHOWNORMAL); ``` - 第一个参数为父窗口句柄,通常为 NULL。 - 第二个参数为执行动作,通常为 "open"。 - 第三个参数为要执行的程序或文件路径。 - 第四个参数为命令行参数,通常为 NULL。 - 第五个参数为工作目录,通常为 NULL。 - 第六个参数为窗口显示状态,通常为 SW_SHOWNORMAL。 注意:使用 `ShellExecute` 函数需要在程序中包含 `Shellapi.h` 头文件。 ### 回答2: ShellExecute是Windows API中一个非常重要的函数,它可以让我们在Windows操作系统中启动其他应用程序或打开文件等等操作。ShellExecute是一个非常高级的函数,同时也是使用最为广泛的函数之一。ShellExecute可以完成以下的操作: 打开文件:ShellExecute可以帮我们打开指定的文件,并且可以指定打开方式(仅读、写、读写、新窗口等等)。 打开网址:ShellExecute可以通过默认的浏览器打开指定的网址。 执行其他程序:ShellExecute可以启动其他的程序,比如说我们可以使用它启动计算器、记事本等程序。 发送电子邮件:ShellExecute可以启动默认的邮件程序,并创建一封新邮件。 在Shell中运行DOS命令:ShellExecute可以通过cmd.exe来执行DOS命令。 ShellExecute用法非常简单,我们只需要在需要使用的地方,调用ShellExecute函数,并将参数传入即可。ShellExecute函数的参数包含非常多的信息,都是我们需要处理的数据,比如说文件路径、打开方式、窗口句柄等等。比较重要的参数如下: HWND hwnd:表示父窗口的句柄。 LPCTSTR lpOperation:表示操作名称,可以为空,例如open、explore、print等等。 LPCTSTR lpFile:表示要操作的文件名,可以是本地文件路径或一个Web地址。 LPCTSTR lpParameters:表示文件名后面跟随的命令行参数。 LPCTSTR lpDirectory:表示工作目录,如果是NULL,则使用当前目录。 INT nShowCmd:表示窗口的显示方式,例如SW_SHOW、SW_HIDE等等。 总之,ShellExecute是Windows API中非常实用的一个函数,因为他可以帮我们启动其他程序,打开文件、网页,执行DOS命令,并具有传参,指定窗口句柄、指定打开方式、指定工作目录等等功能。这使得我们可以在编写程序时,完全按照自己的需求来完成各种操作,提高了程序的灵活性和可扩展性。 ### 回答3: Shellexecute是Windows API中的一个函数,可用于打开或执行任何类型的文件。 该函数可以将指定文件与系统中的默认应用程序关联,以便在打开文件时使用该应用程序。 在Windows操作系统中,使用Shellexecute函数可以打开文件、网址、电子邮件地址等。 Shellexecute函数可以在使用较小的代码量和不需要依赖特定的编程语言还可以使用。 Shellexecute函数有以下语法: HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd); 参数: hwnd:指向一个父级窗口的指针。可以将其设置为NULL,以便创建一个独立的窗口。 lpOperation:操作字符串,用于指定要执行的动作。在常规的文件操作中,该字符串通常为“open”。 lpFile:包含文件名和位置的字符串。 lpParameters:用于传递附加参数的字符串。 可以将其设置为NULL。 lpDirectory:当前文件夹的位置,如果未指定,可以将其设置为NULL。 nShowCmd:用于指定窗口显示方式的参数。 例如,可以将其设置为SW_SHOW以显示窗口。 使用Shellexecute函数,只需要传递相应的参数即可打开指定的文件。 例如,可以使用以下代码行打开一个网站: ShellExecute(NULL, L"open", L"http://www.google.com", NULL, NULL, SW_SHOWNORMAL); 在这种情况下,传递了操作字符串“open”,指定了网站的URL,并且未使用附加参数。 该函数的返回值为HINSTANCE类型,表示文件执行的结果,如果执行成功,该函数返回值为大于32的整数,否则为NULL。 总的来说,Shellexecute函数是一个非常方便和实用的Windows API,它可以用于打开或执行任何类型的文件,并能够与系统中的默认应用程序关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值