① 如何用c語言做出點擊電腦屏幕指令
如果想方便一點可以用一些腳本實現點擊。
下面是C的API:
//使用
VOIDWINAPImouse_event(
_In_DWORDdwFlags,
_In_DWORDdx,
_In_DWORDdy,
_In_DWORDdwData,
_In_ULONG_PTRdwExtraInfo
);
//但是這個API已經被MS廢棄了
//現在推薦使用
UINTWINAPISendInput(
_In_UINTnInputs,
_In_LPINPUTpInputs,
_In_intcbSize
);
//發送一個結構體INPUT,定義如下:
typedefstructtagINPUT{
DWORDtype;
union{
MOUSEINPUTmi;
KEYBDINPUTki;
HARDWAREINPUThi;
};
}INPUT,*PINPUT;
//如果發送滑鼠點擊,type要賦值為INPUT_MOUSE
//mi要賦值,類型定義如下:
typedefstructtagMOUSEINPUT{
LONGdx;
LONGdy;
DWORDmouseData;
DWORDdwFlags;
DWORDtime;
ULONG_PTRdwExtraInfo;
}MOUSEINPUT,*PMOUSEINPUT;
② 想用tampermonkey做一個腳本,自動點擊radio控制項,網頁源代碼如下,希望能自動點擊「否」,求可用代碼
[...document.querySelectorAll("input[name=ifLvzhou]")].forEach((item)=>{
if(item.value==="否"){
item.checked=true;
}
});
請採納
③ 怎麼用html打開C語言 ,,並且能夠在html中運行C語言的代碼
C語言是程序語言的鼻祖。不過要想在html中運行c?這我就不理解了。你到底要干什麼?
我們可以把c的exe文件跟html文件打包,從而執行c。也可以用Js把c源碼直接拿出來,展示在瀏覽器上。至於要讓c語言在網頁中發揮作用嗎?也不是不行,沒有c語言做不到的事情。但是就沒有那個必要了。
方法嗎?很白痴,就是用c語言控制瀏覽器進程。通過注射來改變進程的值,以達到改變用戶端的code資料。
或許你想讓html能內嵌一個c語言程序。這個意思也就是內嵌一個exe進程在html中。這不就和上面的想法一樣了嗎?用木馬的辦法綁起來就可以了。
順便說一句,c語言功能雖然強大。其他任何語言能做到的,他都能做到。不過,在某些特定的領域中,不宜用。因為麻煩。例如,你要改變一個值,你用js和用c。那個更容易定位一個變數呢?js和html的關系畢竟就是親,他們之間的調用也方便許多。js也能直接訪問code資料。基本html中的功能使用js都能實現,何必再用c?
如果真的有些問題,必須要用c來解決,還望提出一起討論。
④ 如何用c語言編寫一個程序,功能是循環對一個網頁進行刷新,然後對提示的信息選擇確定按鈕,求代碼,謝謝
//CreateList_L.cpp
//To create a LinkList
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
# define TRUE 1
# define FALSE 0
# define OK 1
# define ERROR 0
# define INFEASIBLE -1
# define OVERFLOW -2
typedef struct DuLNode
{ int data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode,*DuLinkList;
// 初始條件:L已存在。操作結果:返回L中數據元素個數
int ListLength(DuLinkList L)
{
int i=0;
DuLinkList p=L->next; // p指向第一個結點
while(p!=L) // p沒到表頭
{
i++;
p=p->next;
}
return i;
}
// 由雙鏈循環線性表L的頭結點出發,正序輸出每個數據元素
void ListTraverse(DuLinkList L)
{
DuLinkList p=L->next;
while(p!=L)
{
cout<<p->data<<"\t";
p=p->next;
}
cout<<endl;
}
// 由雙鏈循環線性表L的頭結點出發,逆序輸出每個數據元素
void ListTraverseBack(DuLinkList L)
{
DuLinkList p=L->prior;
while(p!=L)
{
cout<<p->data<<"\t";
p=p->prior;
}
cout<<endl;
}
//To Creatre a DuLinkList L with HeadNode
void CreateList_DuL(DuLinkList &L)
{
int n;
int i;
DuLNode *p;
L=(DuLinkList)malloc(sizeof(DuLNode));
L->next=L->prior=L;
cout<<"CreateList_L"<<endl<<"================"<<endl;
cout<<"Please input the Init DuLinkNode Number: <eg. 5> ";
cin>>n;
cout<<"Please input the data for DuLinkList Nodes: <eg. 34,67,3,-9,45,...>"<<endl;
for(i=n;i>0;--i)
{
p=(DuLinkList)malloc(sizeof(DuLNode));
cin>>p->data; //Reverse order inputing for Creating a LinkList
p->prior=L;
p->next=L->next;
L->next->prior=p;
L->next=p;
}
if(n)
{
cout<<endl;
cout<<"Success to Create a DuLinkList !"<<endl;
ListTraverse(L);
cout<<endl;
}
else cout<<"A NULL DuLinkList have been created !"<<endl;
}
//ListInsert_Dul()
int ListInsert_DuL(DuLinkList &L)
{
DuLNode *p=L,*s;
int j=0;
int i;
int e;
cout<<"======"<<"before insert:"<<"======"<<endl;
ListTraverse(L);
cout<<"input the location you want to insert:";
cin>>i;
while (i<1||i>ListLength(L)+1)
{
//i值不合法
cout<<"illeagle location,please input the correct location:";
cin>>i;
}
cout<<"input the number you want to insert:";
cin>>e;
while(j<i)
{ p=p->next;
++j;
}
if(!(s=(DuLinkList)malloc(sizeof(DuLNode))))
{
cout<<endl<<"Allocate space failure ! " ;
return (ERROR);
}
s->data=e;
s->prior=p->prior;
s->next=p;
if(i==1)
L->next=s;
p->prior->next=s;
p->prior=s;
cout<<"has insert:"<<e<<endl;
ListTraverse(L);
cout<<"======"<<"after insert:"<<"======"<<endl<<endl;
return (OK);
}
// 刪除帶頭結點的雙鏈循環線性表L的第i個元素,i的合法值為1≤i≤表長
int ListDelete(DuLinkList L)
{
DuLinkList p;
int j=1; // j為計數器
int e;
int i;
cout<<"input the location of the number you want to delete"<<endl;
cin>>i;
while(i<0||i>ListLength(L))
{
//i值不合法
cout<<"illeagle location,please input the correct location:";
cin>>i;
}
p=L->next; // p指向第一個結點
while(p!=L&&j<i) // 順指針向後查找,直到p指向第i個元素或p指向頭結點
{
p=p->next;
j++;
}
if(p==L||j>i) // 第i個元素不存在
{
cout<<"第i個元素不存在"<<endl;
return ERROR;
}
else
{
cout<<"======"<<"before delete:"<<"======"<<endl;
ListTraverse(L);
e=p->data; // 取第i個元素
if(!p) // p=NULL,即第i個元素不存在
return ERROR;
e=p->data;
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
cout<<"has delete:"<<e<<endl;
ListTraverse(L);
cout<<"======"<<"after delete:"<<"======"<<endl<<endl;
return OK;
}
}
void menu(int c)
{
cout<<"================================================="<<endl;
cout<<"\t\t1----建立"<<endl;
cout<<"\t\t2----插入"<<endl;
cout<<"\t\t3----刪除"<<endl;
cout<<"\t\t4----逆置"<<endl;
//cout<<"\t\t5----菜單"<<endl;
cout<<"\t\t0----退出"<<endl;
cout<<"================================================="<<endl;
cout <<endl<<"input you choice number:";
}
void main()
{
DuLinkList L;
int c=1;
while(c!=0)
{
switch(c)
{
case 0:
break;
case 1:
CreateList_DuL(L);
break;
case 2:
ListInsert_DuL(L);
break;
case 3:
ListDelete(L);
break;
case 4:
ListTraverseBack(L);
break;
default:
cout<<"infeasible choice,input again:"<<endl;
menu(c);
cin>>c;
}
if(c!=0)
{
menu(c);
cin>>c;
}
}
}
⑤ 用C語言如何實現滑鼠自動點擊
通過WIN
API
連個按下
釋放
函數
mouse_eventMOUSEEVENTF_LEFTDOWN0000
mouse_eventMOUSEEVENTF_LEFTUP0000
⑥ C語言,如何對網頁進行操作
首先,你這個想法還是很不錯的,我以前也想這么做過。不過,學習html語言在這里肯定是次要的,主要的還是要學會分析的方法,而不是掌握被分析的內容,你說是吧?如果要用程序抓取網頁自動保存到本地,就要會用socket編程,或者學習使用libcurl庫,這些都比學html語言有用的多,不做網頁抓取的時候,這些知識依然非常有用。而且,不同的網頁,內容不同,規律可能也不同。比如你給的那個例子網址,我右鍵查看了源代碼,裡面就根本沒有所謂的<td>、<tr>標簽,即它的表格不是通過這些標簽來實現的。所以,讓你去看這些標簽,就是南轅北轍了。網頁分析,說到底還是字元串處理和分析。所以,你如果真的想學,不如好好學一下正則表達式和字元串處理相關的函數,以及函數庫,比如tidy庫等。正則表達式是用來匹配一類字元串的,方便找規律,也方便處理,你稍微學習一點點就知道有多麼的強大,多麼的有用了。而且,正則表達式跟語言無關,什麼語言都能用得到,學這個不虧的。標准C庫中沒有正則表達式相關的函數,一般來說C中使用兩種正則表達式庫,一為POSIX
C正則庫,二為perl正則庫PCRE。相比較而言PCRE要強大些,POSIX
C正則庫就足夠使用。下面,這幾個鏈接裡面有網頁分析的一些例子,雖然不都是C語言來處理的。但是,思路都是一致的。
所以,說到底,還是正則表達式、正則函數庫、字元串處理函數這些才是根本。先說這些,希望對你有所幫助。如果你在學習過程中還有什麼問題,歡迎隨時交流:)C#的: http://www.jb51.net/article/16618.htmC#的: http://mytiu.blog.163.com/blog/static/1059718452009127112226478/這里還有一段C語言的代碼,
是將下載下來的網頁源代碼處理成沒有標簽的純文字文本#include
<tidy.h>#include
<buffio.h>#include
<stdio.h>#include
<errno.h>int
main(int
argc,
char
**argv
){const
char*
input
=
"<title>Foo</title>
Foo!";TidyBuffer
output
=
{0};TidyBuffer
errbuf
=
{0};int
rc
=
-1;Bool
ok;TidyDoc
tdoc
=
tidyCreate();
//
Initialize
"document"printf(
"Tidying:\t%s\n",
input
);ok
=
tidyOptSetBool(
tdoc,
TidyXhtmlOut,
yes
);
//
Convert
to
XHTMLif
(
ok
)rc
=
tidySetErrorBuffer(
tdoc,
&errbuf
);
//
Capture
diagnosticsif
(
rc
>=
0
)rc
=
tidyParseString(
tdoc,
input
);
//
Parse
the
inputif
(
rc
>=
0
)rc
=
tidyCleanAndRepair(
tdoc
);
//
Tidy
it
up!if
(
rc
>=
0
)rc
=
tidyRunDiagnostics(
tdoc
);
//
Kvetchif
(
rc
>
1
)
//
If
error,
force
output.rc
=
(
tidyOptSetBool(tdoc,
TidyForceOutput,
yes)
?
rc
:
-1
);if
(
rc
>=
0
)rc
=
tidySaveBuffer(
tdoc,
&output
);
//
Pretty
Printif
(
rc
>=
0
){if
(
rc
>
0
)printf(
"\nDiagnostics:\n\n%s",
errbuf.bp
);printf(
"\nAnd
here
is
the
result:\n\n%s",
output.bp
);}elseprintf(
"A
severe
error
(%d)
occurred.\n",
rc
);tidyBufFree(
&output
);tidyBufFree(
&errbuf
);tidyRelease(
tdoc
);return
rc;}