我正在尝试在 C++ 中使用 WinSnmp 编写一个简单的程序。关于这方面的信息很少,我完全迷失了。我要做的就是查询我网络上的打印机并阅读发送给我的信息。这是我的代码:
#include <WinSnmp.h>
#include <stdio.h>
smiLPUINT32 majorVers;
smiLPUINT32 minorVers;
smiLPUINT32 nLevel;
smiLPUINT32 translateMode;
smiLPUINT32 retranslateMode;
BYTE pdu;
int main()
{
//Starting the snmp session
SnmpStartup(majorVers, minorVers, nLevel, translateMode, retranslateMode);
printf("%i majorVers \n %i minorVers \n "
"%i nLevel \n "
"%i translateMode \n "
"%i retranslateMode \n\n",
majorVers, minorVers, nLevel, translateMode, retranslateMode);
SnmpCleanup();
}
到目前为止,我一直在关注API,试图弄清楚程序的结构应该如何,但是很难编写完全基于 API 的程序。
我在网上找不到任何好的教程、代码示例或有用的文档。我想知道是否有人知道任何可以引导我朝着正确方向前进的东西,例如工作代码片段或有用的教程,那会很棒。提前致谢 :)
编辑:我取得了一些进展,但我仍然卡住了。我试图找出控制台窗口的值,以便将其传递给 SnmpCreateSession 函数,但我遇到了问题。这是我更新的代码:
#include <WinSnmp.h>
#include <stdio.h>
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
smiLPUINT32 majorVers;
smiLPUINT32 minorVers;
smiLPUINT32 nLevel;
smiLPUINT32 translateMode;
smiLPUINT32 retranslateMode;
HWND window;
HWND hwndFound;
char* returnInfo;
char newWindowTitle[MY_BUFSIZE];
char oldWindowTitle[MY_BUFSIZE];
LPWSTR consoleTitle;
BYTE pdu = 1;
void Startup(){
//Starting the snmp session
SnmpStartup(majorVers, minorVers, nLevel, translateMode, retranslateMode);
printf("%i majorVers \n"
"%i minorVers \n"
"%i nLevel \n"
"%i translateMode \n"
"%i retranslateMode \n\n",
majorVers, minorVers, nLevel, translateMode, retranslateMode);
GetConsoleTitle(oldWindowTitle, MY_BUFSIZE);
hwndFound = FindWindow(NULL, oldWindowTitle);
}
void CreateSession(){
SnmpCreateSession(window,5,0,0);
printf("create session returns: %s", SnmpCreateSession(window,5,0,0));
}
int main(){
Startup();
CreateSession();
SnmpCleanup();
}
在这一点上,我最终得到的所有值都是 NULL ......我不知道下一步该做什么。