C语言如何检测点击的按钮?

C语言如何检测点击的按钮?,第1张

通常很多情况下,会有这样的事情,就是:
我们在运行某些程序的时候,发现按钮置灰了,比如购买版权或者输入序列号才能够获得访问权限。某个按钮才允许点击。
其实所有的这些东西都是 别的人或者公司利用一些编程语言调用windows的函数,实现的。所以如果我们也能调用windows的函数,那么我们就能够执行一些按钮或者某些东西背后的函数。
自己的mfc还暂时 用不了,不过 可以 试试这个。
调出这个界面,看到有一个置灰的设置按钮。我们可以试着调用这个后面的函数。
/如何调出来?在win7环境下
打开控制面板
点击鼠标。/
然后利用vs的工具中的spy++ x64。
进入查找窗口。
拖住这个到刚刚鼠标的那个置灰的按钮上面。就可以得到一个句柄
句柄在我理解,就是一个话把子,怎么解释,就是,别人说一件事儿,你得顺着往下说才能把话接下来,然后完成你想说的东西。在程序里面,执行到这里,有这样一个句柄,允许我们说话了,我们就从这一点开始,顺着往下说,往往就能得到我们想要的结果
所以得到了句柄之后。我们可以新建一个工程。
#include <windowsh>
int main(){

SendMessage(0x001607E6,WM_LBUTTONDOWN,0,0);
SendMessage(0x001607E6,WM_LBUTTONUP,0,0);

return 0;
}
//在HWND的第一个参数里面输入刚刚的句柄。
//猜测 第二个参数 是 WindowManager_LeftButtonDown,就是窗口管理器左键按钮点下。
//然后左键按钮d起。
就强制的往刚刚不能执行的函数里面发送了一个信息。前面的引文介绍说,这就是调用了windows底层的一些函数,如果按钮可以点击,则鼠标点击,按钮按下,当需要注册的时候,或者需要序列号的时候我们并没有,就不能点击。但是当我们给他发送一条消息以后,是不是问题就解决了。

在你的基础上改的
#include<stdioh>
#include<stdlibh>
#define LISTSIZE 100
#define ADD 10
typedef struct {
int elem;
int length;
int listsize;
}List;//定义线性表的结构体
void SqList(List &L)
{
//int i;//C++中C程序的变量定义放在开始
Lelem=(int )malloc(LISTSIZEsizeof(int));
if(!Lelem) exit(0);
Llistsize=LISTSIZE;
//printf("请输入线性表长度:");
//scanf("%d",&Llength);
//printf("为线性表赋值:");
//for(i=0;i<=Llength-1;i++)
//scanf("%5d",&Lelem[i]);
Llength =0;//如果是初始化,那么长度就是0
}//初始化线性表
int InsertSq(List &L,int i,int e)
{
int p=NULL, q=NULL;//所有变量的定义都必须置前
if(i<0||i>Llength+1) return 0;
if(Llength>=Llistsize)
{
int newbase;
newbase=(int )realloc(Lelem,(Llistsize+ADD)sizeof(int));
if(!newbase) exit(0);
Lelem=newbase;
Llistsize+=ADD;
}

q=&Lelem[i-1];
for(p=&Lelem[Llength-1];p>=q;--p)
(p+1)=p;
q=e;
Llength++;
return 1;
}//在线性表的第i个元素之前插入元素e
void PrintList(List L)
{
printf("顺序表中的元素:\n");
for(int k=0;k<=Llength-1;k++)
printf("%5d",Lelem[k]);
printf("\n");
}
void main()
{

//void SqList(List &L);
//int InsertSq(List &L,int i,int e);使用之前已经定义了,可以不用函数说明
List L;
int i,e; //函数调用前,变量必须定义

SqList(L);
printf("输入顺序表中元素的个数:");
scanf("%d",&i);
printf("请输入元素:");
for(int j=1;j<=i;j++)
{
scanf("%d",&e);
InsertSq(L,j,e);
}
PrintList(L);
printf("输入插入的元素及其位置:");
scanf("%5d%5d",&e,&i);
InsertSq(L,i,e);
PrintList(L);
}

打开指定网页,可以有很多方式,比如shellexecute函数就可以直接打开你需要的网页。
关于登陆用户名密码,个人感觉应该是循环遍历当前页面的所有控件,根据控件名,来选择登陆和密码输入框。至于验证码,这个问题,解决难度有点高。暂时没想到什么好的方式,如果没错的话,应该是引用三方插件,或者是对进行分析。要求相对比较高。
(PS:要知道,验证码的目的就是防止用户只用流氓软件进行登陆,造成损失不必要的资源。)
个人愿意配合做开发。

可以用PHP、ASP或者其他都行

如果不知道怎么编写,最好考虑先用一些开源的源码

比如wordpress、discuz等

希望能帮助到你

不知道你是哪个平台的cgi,如果有>语言只是一种工具,而可视化窗口是系统实现的功能,不能这样去联系它们。任何语言要写可视化窗口都是调用底层函数API的,API调用驱动程序去 *** 作硬件显示画面,易语言有组件只是方便编程而已,VC的开发环境一样有控件调用,比如对话框,按钮,用C++用C写都一样,都是调用底层API的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13204335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-20
下一篇 2023-06-20

发表评论

登录后才能评论

评论列表(0条)

保存