在网页中点击连接打开vnc链接

开发环境:vc++6.0

测试运行环境:win7,win10

vnc viewer版本:vnc-4_6_3-x86_win32_viewer.exe

【vnc://协议注册代码】

@ECHO OFF
REG DELETE HKEY_CLASSES_ROOT\vnc /f
cd /d "%~dp0"
> "vnc.reg" ECHO Windows Registry Editor Version 5.00
>>"vnc.reg" ECHO.
>>"vnc.reg" ECHO [HKEY_CLASSES_ROOT\vnc]
>>"vnc.reg" ECHO @="URL:vnc Protocol Handler"
>>"vnc.reg" ECHO "URL Protocol"=""
>>"vnc.reg" ECHO [HKEY_CLASSES_ROOT\vnc\shell]
>>"vnc.reg" ECHO [HKEY_CLASSES_ROOT\vnc\shell\open]
>>"vnc.reg" ECHO [HKEY_CLASSES_ROOT\vnc\shell\open\command]
>>"vnc.reg" ECHO @="\"%cd:\=\\%\\vncme.exe\" %%1"
START /WAIT REGEDIT /S "vnc.reg"
DEL "vnc.reg"

上述代码保存为“installme.bat”,并双击运行,这样,在网页中就会启动vnc viewer

若win7下不能打开vnc协议,尝试新建vncme.reg文件,再双击运行,内容如下:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\vnc]
"URL Protocol"=""
@="vnc protocol"
[HKEY_CLASSES_ROOT\vnc\DefaultIcon]
@="c:\\1\\vncme.exe"
[HKEY_CLASSES_ROOT\vnc\shell]
[HKEY_CLASSES_ROOT\vnc\shell\open]
[HKEY_CLASSES_ROOT\vnc\shell\open\command]
@="\"C:\\1\\vncme.exe\" %1"

【html部分】

<a href="vnc://ip:5900 123456">启动vnc</a>

其中:ip为vnc server ip,123456为密码,中间已空格分隔,vmware开启虚拟机方式参照:开启vmware中的vnc_vmware vnc_hifhf的博客-CSDN博客

【vc++部分】

新建工程:Win32 Console Application

代码部分:

// vncme.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>
#include "windows.h"
#include <shellapi.h>
#include <string>
using namespace std;

//遍历所有窗口
BOOL CALLBACK window_callback(HWND window, LPARAM lParam) {
	char title[255];
	GetWindowTextA(window, title, sizeof(title));	
	string t=title;
	//std::cout << t << std::endl;
	if(t=="VNC Viewer"){
		cout<<window<<endl;
		return FALSE;
	}
	else{
		return TRUE;	
	}
}
int n=0; //n=2是第二个文本框,跳出遍历
HWND hwEdit;
//遍历子窗口
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
	
	char szClsName[64];
	GetClassName(hwnd,szClsName,sizeof(szClsName));
	//cout<<hwnd<<szClsName<<endl;
	
	if (strcmp(szClsName,"Edit")==0)
	{
		n++;
		//cout<<n<<endl;
		if(n==2){
			hwEdit=hwnd;
			return FALSE;
		}

		
	}
	return TRUE;
}


int main(int argc, char* argv[])
{
	string str=argv[1];
	cout<<"host:"<<str<<endl;
	int pos2=str.find("%20");
	cout<<pos2<<endl;
	string str1=str.substr(0,pos2);
	cout<<"str1:"<<str1<<endl;
	string str2=str.substr(pos2+3);
	cout<<"str2:"<<str2<<endl;
	string str3="vnc-4_6_3-x86_win32_viewer.exe ";
	str3=str3.append(str1.substr(6,sizeof(str1)+7).append(" ").append(str2));
	WinExec(str3.c_str(), SW_SHOW);  //正常运行代码
	Sleep(500);
	HWND hq=FindWindow(NULL,"Authentication Credentials"); 
	if(hq){
		char title[255];
		GetWindowTextA(hq, title, sizeof(title));			
		EnumChildWindows(hq,EnumChildProc,0);
		char* ch = (char*)str2.data();
		SendMessage(hwEdit, WM_SETTEXT, 0, (LPARAM)ch);

		/*点击确定按钮*/
		HWND hBtnOK;
		hBtnOK=GetDlgItem(hq,1);
		PostMessage(hBtnOK,BM_CLICK,NULL,NULL);		
	}
	else{
		cout<<"VNC Viewer客户端打开失败,请重试!"<<endl;
	}
	return 0;
}

c++部分的exe资源下载:https://download.csdn.net/download/hifhf/87806958

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hifhf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值