經過多天的努力 終于搞定了ISAPI 并不是完全搞定 符合自己的需求了
目前先寫這些 看不懂的話 留言 我只會WINCE6.0 PB用的是6 其他的不懂了
需求WINCE 里面搭建個類似IIS 發布網站 做類似路由的網頁 更改IP或者其他的
方式1、 用CGI 必須移植goahead
方式2、 用ISAPI 系統添加組件后支持
方式3、 COM組件
我用的是ISAPI方式實現的
WINCE 自帶web服務器 但是不支持ASP 所以添加組件讓他來支持ASP
參考 http://zxffl.blog.163.com/blog/static/25909762010102475353451/ wince6.0 web開發
圖1
002
主要修改的的是以上2個圖的內容
這個是tracker.dll
咱們自己修改tracker.dll中的內容
例如
看這里 判斷URL中有沒有修改IP 有的話自己修改了 這里用的是修改注冊表的方法
if (strstr(lpEcb->lpszQueryString,"修改IP")) { //此處寫修改IP的代碼 // Dump the log strcpy(outbuf, "content-type: text/html\r\n\r\n"); outbuflen = strlen(outbuf); lpEcb->ServerSupportFunction(lpEcb->ConnID, HSE_REQ_SEND_RESPONSE_HEADER, NULL, &outbuflen, (LPDWORD)outbuf); LPCTSTR lp_Path=TEXT("Comm\\DM9CE1\\Parms\\TcpIp"); LPCTSTR lp_Key=TEXT("IpAddress"); LPCTSTR lp_Val=TEXT("192.168.1.235"); bool bOk=false; HKEY hKEY; DWORD type_1=REG_SZ; long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, lp_Path, 0, KEY_WRITE,&hKEY)); if(ret0==ERROR_SUCCESS) { long ret1=::RegSetValueEx(hKEY, lp_Key, NULL, type_1, (LPBYTE)lp_Val, 100); if(ret1==ERROR_SUCCESS) { ::RegCloseKey(hKEY); bOk=true; } } if (bOk) { strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log zhangsan</TITLE></HTML> \n\ <H1>192.168.1.235 修改成功</H1> \n\ <hr>\n"); } else { strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log zhangsan</TITLE></HTML> \n\ <H1>修改IP失敗</H1> \n\ <hr>\n"); } strlen(lp_Path); //strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log zhangsan</TITLE></HTML> \n\ // <H1>IIS Tracker Log 2012-0315</H1> \n\ // <hr>\n"); outbuflen = strlen(outbuf); lpEcb->WriteClient(lpEcb->ConnID, outbuf, &outbuflen, HSE_IO_SYNC); EnterCriticalSection(&LogCS); if (pLogStart > pLogStop) { DWORD firstbuflen = ((DWORD)pLogBuff + dwLogBuffSize) - (DWORD)pLogStart; DWORD secondbuflen = (DWORD)pLogStop - (DWORD)pLogBuff; DWORD outbuflen = firstbuflen + secondbuflen; char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen); memcpy(pOutput, pLogStart, firstbuflen); memcpy(pOutput + firstbuflen, pLogBuff, secondbuflen); LeaveCriticalSection(&LogCS); lpEcb->WriteClient(lpEcb->ConnID, pOutput, &outbuflen, HSE_IO_SYNC); HeapFree(GetProcessHeap(), 0, pOutput); } else { outbuflen = (DWORD)pLogStop - (DWORD)pLogStart; char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen); memcpy(pOutput, pLogStart, outbuflen); LeaveCriticalSection(&LogCS); lpEcb->WriteClient(lpEcb->ConnID, pOutput, &outbuflen, HSE_IO_SYNC); HeapFree(GetProcessHeap(), 0, pOutput); } strcpy(outbuf, "\n</html>"); outbuflen = strlen(outbuf); lpEcb->WriteClient(lpEcb->ConnID, outbuf, &outbuflen, HSE_IO_SYNC); return HSE_STATUS_SUCCESS; } if (strstr(lpEcb->lpszQueryString, "View")) { // Dump the log strcpy(outbuf, "content-type: text/html\r\n\r\n"); outbuflen = strlen(outbuf); lpEcb->ServerSupportFunction(lpEcb->ConnID, HSE_REQ_SEND_RESPONSE_HEADER, NULL, &outbuflen, (LPDWORD)outbuf); strcpy(outbuf,"<HTML><TITLE>IIS Tracker Log</TITLE></HTML> \n\ <H1>IIS Tracker Log</H1> \n\ <hr>\n"); outbuflen = strlen(outbuf); lpEcb->WriteClient(lpEcb->ConnID, outbuf, &outbuflen, HSE_IO_SYNC); EnterCriticalSection(&LogCS); if (pLogStart > pLogStop) { DWORD firstbuflen = ((DWORD)pLogBuff + dwLogBuffSize) - (DWORD)pLogStart; DWORD secondbuflen = (DWORD)pLogStop - (DWORD)pLogBuff; DWORD outbuflen = firstbuflen + secondbuflen; char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen); memcpy(pOutput, pLogStart, firstbuflen); memcpy(pOutput + firstbuflen, pLogBuff, secondbuflen); LeaveCriticalSection(&LogCS); lpEcb->WriteClient(lpEcb->ConnID, pOutput, &outbuflen, HSE_IO_SYNC); HeapFree(GetProcessHeap(), 0, pOutput); } else { outbuflen = (DWORD)pLogStop - (DWORD)pLogStart; char *pOutput = (char*)HeapAlloc(GetProcessHeap(), 0, outbuflen); memcpy(pOutput, pLogStart, outbuflen); LeaveCriticalSection(&LogCS); lpEcb->WriteClient(lpEcb->ConnID, pOutput, &outbuflen, HSE_IO_SYNC); HeapFree(GetProcessHeap(), 0, pOutput); } strcpy(outbuf, "\n</html>"); outbuflen = strlen(outbuf); lpEcb->WriteClient(lpEcb->ConnID, outbuf, &outbuflen, HSE_IO_SYNC); return HSE_STATUS_SUCCESS; } if (strstr(lpEcb->lpszQueryString, "Clear")) { EnterCriticalSection(&LogCS); pLogStart = pLogStop = pLogBuff; LeaveCriticalSection(&LogCS); Stamp(0); strcpy(outbuf, "<FONT SIZE=+2> Log cleared.</FONT>\n"); LogWrite(outbuf, strlen(outbuf)); LogConfig(); strcpy(outbuf, "content-type: text/html\r\n\r\n"); outbuflen = strlen(outbuf); lpEcb->ServerSupportFunction(lpEcb->ConnID, HSE_REQ_SEND_RESPONSE_HEADER, NULL, &outbuflen, (LPDWORD)outbuf); strcpy(outbuf,"<HTML> \n\ <HEAD> \n\ <TITLE>IIS Tracker Utility</TITLE> \n\ </HEAD> \n\ <BODY> \n\ <H1>IIS Tracker Utility</H1> \n\ <H2>Log Successfully Cleared</H2>\n"); outbuflen = strlen(outbuf); lpEcb->WriteClient(lpEcb->ConnID, outbuf, &outbuflen, HSE_IO_SYNC); ShowConfig(lpEcb); strcpy(outbuf, "</BODY></HTML>"); outbuflen = strlen(outbuf); lpEcb->WriteClient(lpEcb->ConnID, outbuf, &outbuflen, HSE_IO_SYNC); return HSE_STATUS_SUCCESS; }
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
