⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myvc.cpp

📁 170话费查询系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
	if (strcmp(l_key, "SQLRESULTNAME")==0) {        //	SQLResultName
		p_result = &(pGCA->SQLResultName);
	}
    if (strcmp(l_key, "SQLRESULTSAVED")==0) { 	    //	SQLResultSaved
		p_result = &(pGCA->SQLResultSaved);
	}	
	if (strcmp(l_key, "CONTROLAPPNAME")==0) {       //	ControlAppName
		p_result = &(pGCA->ControlAppName);
	}
	if (strcmp(l_key, "DBSERVERAPPNAME")==0) {      //	DBServerAppName
		p_result = &(pGCA->DBServerAppName);
	}
    if (strcmp(l_key, "DBCLIENTAPPNAME")==0) {  	//	DBClientAppName
		p_result = &(pGCA->DBClientAppName);
	}
    if (strcmp(l_key, "CUIJIAOAPPNAME")==0) {  		//	CuiJiaoAppName
		p_result = &(pGCA->DBClientAppName);
	}
	if (strcmp(l_key, "STARTQUERYMONTH")==0) {      //	StartQueryMonth
		p_result = &(pGCA->StartQueryMonth);
	}
    if (strcmp(l_key, "ENDQUERYMONTH")==0) { 	    //	EndQueryMonth
		p_result = &(pGCA->EndQueryMonth);
	}
    if (strcmp(l_key, "CURQFTABLE")==0) { 	    //	CurQfTable
		p_result = &(pGCA->CurQfTable);
	}

	if (strcmp(l_key, "CURQFTABLE")==0) { 	    //	CurQfTable
		p_result = &(pGCA->CurQfTable);
	}
	if (strcmp(l_key, "LOG_UTPT")==0) {	        //	Log_Utpt
		p_result = &(pGCA->Log_Utpt);
	}
	if (strcmp(l_key, "INITSTATUS")==0) {			//	InitStatus
		p_result = &(pGCA->InitStatus);
	}
    if (strcmp(l_key, "INITHIDE")==0) { 			//	InitHide
	    p_result = &(pGCA->InitHide);
	}
	if (strcmp(l_key, "VFIT_LEN")==0) { 			//	VFIT_LEN
	    p_result = &(pGCA->VFIT_LEN);
	}
	if (strcmp(l_key, "VOX_PATH")==0) { 			//	txt
	    p_result = &(pGCA->vox_path);
	}
	if (strcmp(l_key, "TXT")==0) { 			//	txt
	    p_result = &(pGCA->txt);
	}

	CloseHandle(hMap); 
	ReleaseLock(hlock);
    return p_result;
}

/***********************************************************************************************
	函数: LPVOID ReadGCARefuseCall(char * index)
	说明: 获取拒绝号码
	index      : RefuseCall表的位置(1...MaxRefuseCall)
	返回:	   :拒绝服务号码字符串,如果表结束(EOT),返回NULL
	
************************************************************************************************/
extern "C" _declspec ( dllexport ) LPVOID PASCAL ReadGCARefuseCall(char * index)
{   	
	GCA * pGCA;
	int l_index;
	HANDLE hMap;                 
    LPVOID p_Map;   
    LPVOID p_result;             
	HANDLE hlock;				 //共享锁

	//等待共享文件被释放,然后抢占并琐定
	hlock = WaitLock(MUTEX_GCA);

    
	l_index = atoi(index)-1;
	if (l_index >MaxRefuseCall-1 || l_index <0) {
	   WinPrintf("ReadGCARefuseCall()错误:index(%d) > MaxRefuseCall(%d)",l_index,MaxRefuseCall);
	   ReleaseLock(hlock);
	   return NULL;
	}

    //打开GCA文件
    hMap=::OpenFileMapping(FILE_MAP_WRITE,FALSE, GlobalCommuAreaName);	
	if (hMap == NULL) {
	    ::MessageBox(NULL, "打开全局共享区(GCA)出错!", "DLL message", MB_OK);	
		ReleaseLock(hlock);
		return NULL;   
	}
    	
	//获得GCA内存地址的指针
	p_Map = MapViewOfFile(hMap,FILE_MAP_WRITE ,0,0,0);
	if (p_Map == NULL) {
       		::MessageBox(NULL, "SetGCAREFUSECALL():p_Map is NULL!","DLL message", MB_OK);	
			ReleaseLock(hlock);
       		return NULL;
	}
	pGCA  = (GCA *)p_Map;
	if (pGCA == NULL) {
		::MessageBox(NULL, "SetGCAREFUSECALL():p_Sem is NULL!", "DLL message",MB_OK);	
		ReleaseLock(hlock);
		return NULL;
	}
	  	
	p_result = &(pGCA->RefuseCall[l_index]);	

	CloseHandle(hMap); 
	ReleaseLock(hlock);
    return p_result;
}


/************************************************************
 *        NAME: GetPortNumber()
 * DESCRIPTION: 返回语音卡端口个数
 *              
 ************************************************************/
extern "C" _declspec ( dllexport ) int GetPortNumber()
{
   char snum[20];
   int  num;
   
   
   strcpy(snum,(const char *)ReadGCA("ChannelNumber"));
   num = atoi(snum);
   
   return num;

}


/************************************************************
 *        NAME: GetScreenShowWindow()
 * DESCRIPTION: 返回显示程序(即主控程序)的窗口句柄
 *              
 ************************************************************/
extern "C" _declspec ( dllexport ) HWND GetScreenShowWindow()
{
   char WinName[256];
   char *pClass;

   pClass = NULL;
   //获得主控窗口名
   //strcpy(WinName,(const char *)ReadGCA("ControlAppName"));
   strcpy(WinName,TheControlAppName);
   
   //主控程序没有启动,或读GCA出错
   if (WinName == NULL) {   
      return NULL;
   }
   return FindWindow(pClass,WinName);

}


/************************************************************
 *        NAME: GetDataServerWindow()
 * DESCRIPTION: 返回数据服务程序(即数据库访问程序)的窗口句柄
 *              
 ************************************************************/
extern "C" _declspec ( dllexport ) HWND GetDataServerWindow()
{
   char WinName[256];
   char *pClass;

   pClass = NULL;
   //获得主控窗口名
   //strcpy(WinName,(const char *)ReadGCA("DBServerAppName"));
   strcpy(WinName,TheServerAppName);
   
   //主控程序没有启动,或读GCA出错
   if (WinName == NULL) {   
      return NULL;
   }
   return FindWindow(pClass,WinName);

}
/************************************************************
 *        NAME: GetDataClientWindow()
 * DESCRIPTION: 返回数据请求程序(即语音服务程序)的窗口句柄
 *              
 ************************************************************/
extern "C" _declspec ( dllexport ) HWND GetDataClientWindow()
{
   char WinName[256];
   char *pClass;

   pClass = NULL;
   //获得主控窗口名
   //strcpy(WinName,(const char *)ReadGCA("DBClientAppName"));
   strcpy(WinName,TheClientAppName);
   
   //主控程序没有启动,或读GCA出错
   if (WinName == NULL) {   
      return NULL;
   }
   return FindWindow(pClass,WinName);

}

/************************************************************
 *        NAME: GetCuiJiaoWindow()
 * DESCRIPTION: 返回数据请求程序(即语音服务程序)的窗口句柄
 *              
 ************************************************************/
extern "C" _declspec ( dllexport ) HWND GetCuiJiaoWindow()
{
   char WinName[256];
   char *pClass;

   pClass = NULL;
   //获得主控窗口名
   //strcpy(WinName,(const char *)ReadGCA("DBClientAppName"));
   strcpy(WinName,TheCuiJiaoAppName);
   
   //主控程序没有启动,或读GCA出错
   if (WinName == NULL) {   
      return NULL;
   }
   return FindWindow(pClass,WinName);

}

/*****************************************************************************************
 函数	: int  DiskGCA(char * diskfile)
 说明	:将GCA写入磁盘文件
		diskfile : 磁盘文件名
****************************************************************************/
extern "C" _declspec ( dllexport ) int PASCAL DiskGCA(char * diskfile)
{

	HANDLE		hMap;        
	LPVOID		p_Map;       
	OFSTRUCT	ofstruct;
    OFSTRUCT *  pof;
	HANDLE		hdisk;
	DWORD		bytes,p_bytes;
	GCA		 *  pGCA;
	int			i;
	char		msg[TXT_LEN];

	HANDLE hlock;				 //共享锁

	//等待共享文件被释放,然后抢占并琐定
	hlock = WaitLock(MUTEX_GCA);

    pof = &(ofstruct);
	hMap=::OpenFileMapping(FILE_MAP_WRITE,FALSE, GlobalCommuAreaName);
	if (hMap == NULL) {
	    ::MessageBox(NULL, "DiskGCA():打开全局共享区(GCA)出错!", "DLL message", MB_OK);	
		ReleaseLock(hlock);
		return NULL;   
	}    
	p_Map = MapViewOfFile(hMap,FILE_MAP_WRITE ,0,0,0);	
	//转换成sempahore指针	
	pGCA  = (GCA *)p_Map;    	

	hdisk = CreateFile(diskfile,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
	if (hdisk==INVALID_HANDLE_VALUE){
	    ::MessageBox(NULL, "DiskGCA():创建GCA磁盘映像文件出错!", "DLL message", MB_OK);	
		CloseHandle(hMap); 
		ReleaseLock(hlock);
        return NULL;
	}

	   sprintf(msg, ".ChannelNumber=[%s]\n", pGCA->ChannelNumber);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".SemaphoreName=[%s]\n", pGCA->SemaphoreName);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".SQLCommandName=[%s]\n", pGCA->SQLCommandName);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }
	   
	   sprintf(msg, ".SQLResultName=[%s]\n", pGCA->SQLResultName);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".ControlAppName=[%s]\n", pGCA->ControlAppName);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".DBServerAppName=[%s]\n", pGCA->DBServerAppName);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".DBClientAppName=[%s]\n", pGCA->DBClientAppName);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".CuiJiaoAppName=[%s]\n", pGCA->CuiJiaoAppName);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".StartQueryMonth=[%s]\n", pGCA->StartQueryMonth);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".EndQueryMonth=[%s]\n", pGCA->EndQueryMonth);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }
	   sprintf(msg, ".CurQfTable=[%s]\n", pGCA->CurQfTable);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

////////////////
	   sprintf(msg, ".Log_Utpt=[%s]\n", pGCA->Log_Utpt);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".InitStatus=[%s]\n", pGCA->InitStatus);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".InitHide=[%s]\n", pGCA->InitHide);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }
	   sprintf(msg, ".VFIT_LEN=[%s]\n", pGCA->VFIT_LEN);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }
	   sprintf(msg, ".vox_path=[%s]\n", pGCA->vox_path);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }

	   sprintf(msg, ".txt=[%s]\n", pGCA->txt);
	   bytes = strlen(msg);
	   if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
	   }


       for (i=0; i<MaxRefuseCall; i++){
	     sprintf(msg, ".RefuseCall[%d]=[%s]\n", i, pGCA->RefuseCall[i]);
	     bytes = strlen(msg);
	     if(WriteFile(hdisk, msg, bytes, &p_bytes,NULL)==0) {
	      //::MessageBox(NULL, "写磁盘映像文件出错", "DLL message", MB_OK);	
		 }

	   }

	CloseHandle(hdisk);
	CloseHandle(hMap); 
	ReleaseLock(hlock);
	return 1;
   
}


/**********************************************************************************************
*
*
*                                   查询语法结构区操作函数
*
*
**********************************************************************************************/
/***************************************************************
*
*    函数 int CreateQSSA()
*    说明:在内存中创建查询语法结构区
* 
***************************************************************/
extern "C" _declspec ( dllexport ) int PASCAL  CreateQSSA()
{		
    HANDLE hMap;                   //内存文件句柄
	QSSA * pQSSA;
    LPVOID p_Map; 
	int    i;

    
	hMap = CreateFileMapping((HANDLE)-1,NULL,PAGE_READWRITE,0, sizeof(QSSA)*MaxQueryDemand,QuerySyntaxStructAreaName);
    if (hMap != NULL)  { //文件创建成功
		if(GetLastError() == ERROR_ALREADY_EXISTS) {
           //::MessageBox(NULL, "查询语法结构区(QSSA)已经存在!", "DLL message", MB_OK);	
		}
		else{
		   //::MessageBox(NULL, "查询语法结构区(QSSA)已成功创建!", "DLL message", MB_OK);	
		   // 创建成功,进行初始化...(active = 'N', str ='')
			p_Map = MapViewOfFile(hMap,FILE_MAP_WRITE ,0,0,0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -