
不是很清楚楼主要表达的意思~~~但从大意上是不是理解为想要获得一个类的所有成员,并将此打印出来?
如果是这样的话不需要定义一个函数,直接在main函数声明一个变量就搞定了
比如说我声明一个CGame类,类里有fish,snake,tiger3个成员,那我只需在main函数里声明一个CGame的变量 :CGame play ,然后在play后面加上“”(点)号,就会自动出现CGame类里的成员,然后在输出的时候用cout<<playfish<<playsnake<<playtiger<<endl;就行了
这样做。。
在类A里面定义一个全局变量 result
然后在C里面调用 Athisresult = Cstring
这样 就传递到A了。。。
然后在B里面 你就可以直接调用A。的全局变量
IDEA使用小技巧:ctrl+shift+alt+c 可以发到全路径名#方法名;
先选中方法名,然后键入ctrl+shift+alt+c ;就复制了全路径名#方法名;使用的时候直接ctrl+v黏贴一下就可以了。
你FindWindow函数的第二个参数有问题,我个人认为你应该把"name"直接改成name,不要用引号包起来。你现在的写法会导致你的FindWindow找不到对应的窗体
你的第一个SendMessage的第二个参数是WM_PASTE,说明你想用过剪切板粘贴的方式将内容粘贴进qq的文本框中。但是我认为这种方法并不能成功,因为你首先得用SetClipboardData把内容设置进剪切板,并且还需要保证编码格式完全正确。
你的第二个SendMessage是想向qq程序的消息队列里面发送一个键盘回车键的信号,感觉没什么问题,但是这种做法对于某些带有防病毒或者防盗号功能的程序是无效的,我也不清楚SendMessage是否对qq程序有效。
今天太晚了,我明天会抽空弄一下QQ发送粘贴内容的程序,我自己试一下看看能不能行,能的话我就把代码发给你参考一下。
-------------------------------------第二天------------------------------------------
今天我自己试了一下,发现是可以发送粘贴内容的,以下是我的代码:
#include <windowsh>
int main()
{
system("start tencent://message/uin=2049192198");//发起qq对话,2049192198是我的小号
char data[128] = "hehehe";//发送的qq消息内容
char cls[128] = "TXGuiFoundation";//qq窗口的窗口类名
char name[128] = "XXX";//qq窗口名字,根据聊天窗口的不同会有所区别
OpenClipboard(NULL);//打开剪切板
EmptyClipboard();//清空剪切板
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (strlen(data) + 1) sizeof(char));//申请全局内存空间
LPVOID lpVoid = GlobalLock(hMem);//锁定内存
memcpy(lpVoid, data, strlen(data) + 1);//将data字符串的数据拷贝到hMen(刚刚申请的内存)中
GlobalUnlock(hMem);//取消锁定
SetClipboardData(CF_TEXT, hMem);//设置剪切板的数据
CloseClipboard();//关闭剪切板
HWND qq = FindWindowA(cls, name);//寻找窗体
SendMessageA(qq, WM_PASTE, 0, 0);//向目标窗体发送粘贴消息
SendMessageA(qq, WM_KEYDOWN, VK_RETURN, 0);//向目标窗体发送回车消息
return 0;
}
下面我着重说一下如何获取窗口类名和窗口的名字:
首先如果你用的编译器是Visual Studio的话那么按照下面显示的 *** 作即可打开Spy++,
当然如果你没有Visual Studio的话(反正这个软件迟早得下载,因为学习C#和ASPNET的话必须要用这个工具)也可以自己下载并打开Spy++。然后点击图中画圈的按钮
最后拖动下图中画圈的准星,并将它拖动到需要查看的窗体上,之后就能显示对应的窗口类名和窗口名称了。
在全局空间是不允许赋值的,只允许初始化。
就算是内置基本类型都是不允许在函数外赋值的:
int a;
a=1; //不允许
int b=2; //初始化方式就可以
你可以这样:
typedef struct abcd{uint16_t a;uint16_t b;
}abcd;
abcd ccck={0}; //初始化方式
或者在函数内赋值:
int main(){
cccka=0;
}
原理:
通过查看AndroidManifestxml
方法:
可以通过如下方法获得:
1aapt
aapt dump xmltree apk路径 AndroidManifestxml > 输入的路径
2apktool 反编译
apktool d -f apk路径 输出的路径
3monkey---Android自带的工具
adb shell monkey --port 1080 -v -v
aapt即 Android Asset Packaging Tool
该工具在SDK/tools目录下,如果你没有设置环境变量,那需要进入该目录下才能运行aapt命令,如果设置了环境变量则可以在任何目录下运行aapt命令了。
1、列出压缩文件目录
aapt l[ist] [-v] [-a] file{zip,jar,apk}
参数:
-v:会以table的形式输出目录,table的表目有:Length、Method、Size、Ratio、Date、Time、CRC-32、Name。其中Method表示压缩形式,有Deflate和Stored两种,即该Zip目录采用的算法是压缩模式还是存储模式;Ratio表示压缩率。
-a:会详细输出所有目录的内容。
2、查看APK的相关信息
aapt d[ump] [--values] WHAT file{apk} [asset [asset ]]
badging Print the label and icon for the app declared in APK
permissions Print the permissions from the APK
resources Print the resource table from the APK
configurations Print the configurations in the APK
xmltree Print the compiled xmls in the given assets
xmlstrings Print the strings of the given compiled xml assets
1)、查看APK包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息
aapt dump badging < fileapk>
2)、查看权限
aapt dump permissions <fileapk>
3)、查看资源列表
aapt dump resources <fileapk>
把查看信息保存到文件中去可以使用:
aapt dump resources <file_pathapk> > sodinotxt
4)、查看APK配置信息
aapt dump configurations <file_pathapk>
5)、查看指定APK的指定XML文件
aapt dump xmltree <file_pathapk> res/xml
以树形结构输出的xml信息。
aapt dump xmlstrings <file_pathapk> res/xml
输出xml文件中所有的字符串信息。
3、编译android资源
aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifestxml] \
[-0 extension [-0 extension ]] [-g tolerance] [-j jarfile] \
[--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \
[--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \
[--rename-manifest-package PACKAGE] \
[--rename-instrumentation-target-package PACKAGE] \
[--utf16] [--auto-add-overlay] \
[--max-res-version VAL] \
[-I base-package [-I base-package ]] \
[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file
\
[-S resource-sources [-S resource-sources ]] \
[-F apk-file] [-J R-file-dir] \
[--product product1,product2,] \
[-c CONFIGS] [--preferred-configurations CONFIGS] \
[-o] \
[raw-files-dir [raw-files-dir] ]
Package the android resources It will read assets and resources that are
supplied with the -M -A -S or raw-files-dir arguments The -J -P -F and -R
options control which files are output
部分参数解释:
-f:如果编译出来的文件已经存在,强制覆盖;
-m:使生成的包的目录放在-J参数指定的目录;
-J:指定生成的RJava的输出目录;
-S:res文件夹路径;
-A:assert文件夹的路径;
-M:AndroidManifestxml的路径;
-l:某个版本平台的androidjar的路径;
-F:具体指定APK文件的输出
1)、将工程的资源编译出Rjava文件
aapt package –m –J <Rjava目录> -S <res目录> -l <androidjar目录> -M
<AndroidManifestxml目录>
2)、将工程的资源编译到一个包里
aapt package –f –S <res目录> -l <androidjar目录> -A <assert目录> -M
<AndroidManifestxml目录> -F <输出的包目录>
4、打包好的APK中移除文件
aapt r[emove] [-v] file{zip,jar,apk} file1 [file2 ]
5、添加文件到打包好的APK中
aapt a[dd] [-v] file{zip,jar,apk} file1 [file2 ]
6、显示aapt的版本
aapt v[ersion]
以上就是关于C++如何自动获取一个类的所有成员。全部的内容,包括:C++如何自动获取一个类的所有成员。、java,一个包下面有2个类 A 和B A类里有一个内部类C,请问C中的的参数怎么在B类中获取到呢、IDEA获取全路径类名加方法名的快捷键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)