VC6中获取远程桌面连接的客户端ip地址

2024-05-02 17:48

本文主要是介绍VC6中获取远程桌面连接的客户端ip地址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VC6中获取远程桌面连接的客户端ip地址

    在VC6中如果要编译一下代码需要将附件中的文件拷贝到项目目录下。

#include "sal.h"
#include "wtsapi32.h"
#pragma comment(lib, "wtsapi32.lib")
#pragma comment(lib, "kernel32.lib")


#ifdef __cplusplus
extern "C" {
#endif
BOOL WINAPI ProcessIdToSessionId(__in  DWORD dwProcessId,__out DWORD *pSessionId);

#ifdef __cplusplus
}
#endif


#define SM_REMOTESESSION 0x1000


bool GetClientIP(char *clientip)
{
bool fActiveSession = false;
DWORD dwSessionID = -1; // 0 is 1st console session created on XP, 1 is 1st console session on Vista
LPTSTR pData = NULL;
DWORD cbReturned = 0;
WTS_CLIENT_ADDRESS clientaddress;

if(GetSystemMetrics(SM_REMOTESESSION) == 0) return false;


ProcessIdToSessionId(GetCurrentProcessId(), &dwSessionID);
if( WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, dwSessionID, WTSClientAddress, &pData, &cbReturned) && (cbReturned == sizeof(WTS_CLIENT_ADDRESS)) )
{        // if we get WTSActive we're in the active session, otherwise we assume we're not in the active session (WTSDisconnected)
//fActiveSession = (*((INT *)pData) == WTSActive) ? true : false;
memcpy(&clientaddress,pData,sizeof(WTS_CLIENT_ADDRESS));
memset(clientip,0,sizeof(clientip));
sprintf(clientip,"%d.%d.%d.%d", 
clientaddress.Address[2],
clientaddress.Address[3],
clientaddress.Address[4],
clientaddress.Address[5]);
WTSFreeMemory(pData);
return true;
}
WTSFreeMemory(pData);
return false;
}

这篇关于VC6中获取远程桌面连接的客户端ip地址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954819

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

webapp地址

F:\LSP\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A