您的位置:首页 > 其它

CIV 如何在自己的程序中调用外部程序

2017-01-04 17:42 399 查看
缘由:因为一些原因要调用其他公司的应用程序,到处找相关资料,到一个论坛上找到了,最后坛主给了我一个写好的应用程序,很想吐槽,我要他干嘛,我要的是源码,源码啊!!,最后还是自己在NI官网上找到了答案,并不复杂很简单。官网相关问题的地址:http://digital.ni.com/public.nsf/allkb/5BB6381FC21C01C78625750D003F8BE9
界面:
我对官网上给的实例进行了更改添加:添加了打开系统应用程序,和打开一个固定网页。
不想多说直接贴代码:
#include "windows.h"
#include <ansi_c.h>
#include <utility.h>
#include <cvirte.h>
#include <userint.h>
#include "shellapi.h"
#include "call EXE.h"

static int panelHandle;
static int exeHandle = 0;
static int handle;

int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1;	/* out of memory */
if ((panelHandle = LoadPanel (0, "call EXE.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}

int CVICALLBACK QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
if(exeHandle >0)
RetireExecutableHandle (exeHandle);
break;
}
return 0;
}

int CVICALLBACK LaunchFull (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
LaunchExecutableEx ("test_dbg.exe /C full", LE_SHOWMINIMIZED, &exeHandle);
//LaunchExecutableEx ("E:/Program Files (x86)/CMS/CMS.exe", LE_SHOWMINIMIZED, &exeHandle);    //打开我电脑中真实的其他公司的应用程序  这里不作为案例,因为你电脑中不一定存在这个软件
break;
}
return 0;
}

int CVICALLBACK LaunchOriginal (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
LaunchExecutable ("test_dbg.exe");
//LaunchExecutable ("e:/Program Files (x86)/CMS/CMS.exe");   //打开我电脑中真实的其他公司的应用程序  这里不作为案例,因为你电脑中不一定存在这个软件
break;
}
return 0;
}

int CVICALLBACK OpenNote (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
HWND hwnd;
switch (event)
{
case EVENT_COMMIT:

GetPanelAttribute (panelHandle, ATTR_SYSTEM_WINDOW_HANDLE, &handle);
ShellExecute((HWND)handle, "open","notepad.exe", NULL, NULL, SW_NORMAL);
hwnd = FindWindow(NULL,"你好-记事本");
SetParent(hwnd, (HWND)handle);

break;
}
return 0;
}

int CVICALLBACK OpenWeb (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
GetPanelAttribute (panelHandle, ATTR_SYSTEM_WINDOW_HANDLE, &handle);
ShellExecute((HWND)handle, "open", "http://www.baidu.com", NULL, NULL, SW_NORMAL);
break;
}
return 0;
}
其中关于shelapi.h,需要去官方库中引shell32.lib,我的电脑中地址是C:\Program Files (x86)\National Instruments\CVI2013中,自己收索shell32.lib就能找到实例下载地址:http://download.csdn.net/detail/cb_869145753_hp/9728914

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: