vb中怎么才能在我指定路径下新建一个WORD文档?
第一个宏是可以录制的,录制完成以后精简一下就行,如下Sub sS()With Selection.Font.Superscript = False '设置为上标.Subscript = True '设置为下标End WithEnd Sub第二个宏是无法录制的,但是可以在宏里用VBA代码来实现。
假设选中的只有两个字符,可以如下Sub sSwap()Selection.Text = Right(Selection.Text, 1) & Left(Selection.Text, 1)End Sub但是,注意不要选择段末的两个字符,因为他会自动包括一个不可见的段落符而实际上选择了三个字符。
word2010和2016的区别
Sub 随机缩进()Dim myParagraph As ParagraphRandomizeFor Each myParagraph In ThisDocument.ParagraphsmyParagraph.CharacterUnitFirstLineIndent = Int(Rnd() * 10) '在每个段首随机缩进0~9个字符NextEnd Sub
PE格式的pe的具体结构
如下所示(经过简化的,具体的可以查看winnt.h,不同字长的结构,其实大体一样的)。
几个宏定义:typedef unsigned long DWORD; typedef unsigned short WORD; typedef unsigned char BYTE; typedef struct _IMAGE_DOS_HEADER { WORD e_magic; //魔术数字,所有MS-DOS兼容的可执行文件都将此值设为0X5A4D(MZ) WORD e_cblp; //文件最后页的字节数 WORD e_cp; //文件页数 WORD e_crlc; //重定义元素个数 WORD e_cparhdr; //头部尺寸,以段落为单位 WORD e_minalloc; //所需的最小附加段 WORD e_maxalloc; //所需的最大附加段 WORD e_ss; //初始的SS值(相对偏移量) WORD e_sp; //初始的SP值 WORD e_csum; //校验和 WORD e_ip; //初始的IP值 WORD e_cs; //初始的CS值(相对偏移量) WORD e_lfarlc; //重分配表文件地址 WORD e_ovno; //覆盖号 WORD e_res[4]; //保留字 WORD e_oemid; //OEM标识符(相对e_oeminfo) WORD e_oeminfo; //OEM信息 WORD e_res2[10]; //保留字 DWORD e_lfanew; //新exe头部的文件地址 }IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 typedef struct IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; }IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS; typedef struct IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections;//节的数量 DWORD TimeDateStamp; DWORD PointerToSymbols; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; }IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER; typedef struct IMAGE_OPTIONAL_HEADER32 { WORD Magic; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUnInitializedData; DWORD AddressOfEntryPoint; DWORD BaseOfCode; DWORD BaseOfData; DWORD ImgaeBase; DWORD SectionAlignment; DWORD FileAlignment; WORD MajorOperatingSystemVersion; WORD MinorOperatingsystemversion; WORD MajorImageVersion; WORD MinorImageVersion; WORD MajorSubsybtemVersion; WORD MinorSubsybtemVersion; DWORD Win32VersionValue; DWORD SizeOfImage; DWORD SizeoOfHeaders; DWORD CheckSum; WORD Subsystem; WORD DllCharacteristics; DWORD SizeOfStackReserve; DWORD SizeOfStackCommit; DWORD SizeOfHeapReserve; DWORD SizeOfHeapCommit; DWORD LoaderFlages; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; }IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32; PE文件头后是节表,在winnt.h下如下定义 typedef struct _IMAGE_SECTION_HEADER {//IMAGE_SIZEOF_SHORT_NAME=8 BYTE Name[IMAGE_SIZEOF_SHORT_NAME];//节表名称,如“.text” union { DWORD PhysicalAddress;//物理地址 DWORD VirtualSize;//真实长度,这两个值是一个联合结构,可以使用其中的任何一个,//一般是节的数据大小 } Misc; DWORD VirtualAddress;//RVA DWORD SizeOfRawData;//物理长度 DWORD PointerToRawData;//节基于文件的偏移量 DWORD PointerToRelocations;//重定位的偏移 DWORD PointerToLinenumbers;//行号表的偏移 WORD NumberOfRelocations;//重定位项数目 WORD NumberOfLinenumbers;//行号表的数目 DWORD Characteristics;//节属性 如可读,可写,可执行等 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; typedef struct IMAGE_THUNK_DATA { union { DWORD ForwarderString; DWORD Function; DWORD Ordinal; DWORD AddressOfData; }u1; }IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA; typedef struct IMAGE_IMPORT_BY_NAME { WORD Hint; BYTE Name; }IMAGE_IMPORT_BY_NAME;
FSIN怎么用?
C++的sin用的就是FSIN指令下面的指令是通过反汇编一个含有sin的程序得到的:00401084 >$ 8D5424 04 LEA EDX,DWORD PTR SS:[ESP+4]00401088 . E8 48050000 CALL FSIN.__fload_withFB0040108D $ 52 PUSH EDX0040108E . 9B WAIT0040108F . D93C24 FSTCW WORD PTR SS:[ESP]00401092 . 74 50 JE SHORT FSIN.004010E400401094 . 66:813C24 7F02 CMP WORD PTR SS:[ESP],27F0040109A . 74 06 JE SHORT FSIN.004010A20040109C . D92D 28114300 FLDCW WORD PTR DS:[__DEFAULT_CW_in_mem]004010A2 >D9FE FSIN004010A4 . 9B WAIT004010A5 . DFE0 FSTSW AX004010A7 . 9E SAHF004010A8 . 7A 1D JPE SHORT FSIN.004010C7004010AA >833D 808F4300 00 CMP DWORD PTR DS:[___fastflag],0004010B1 . 0F85 77050000 JNZ FSIN.__fast_exit004010B7 . BA 1E000000 MOV EDX,1E004010BC . 8D0D 304A4300 LEA ECX,DWORD PTR DS:[434A30]004010C2 . E9 74050000 JMP FSIN.__math_exit004010C7 >DB2D 2A114300 FLD TBYTE PTR DS:[__pi_by_2_to_61]004010CD . D9C9 FXCH ST(1)004010CF >D9F5 FPREM1004010D1 . 9B WAIT004010D2 . DFE0 FSTSW AX基本上已经很精简了,你实在想内联汇编的话试试我写的这个函数吧:#include double WdsySin (double _InputRad){double _ResultTemp;_asm{fld _InputRadfsinfstp _ResultTemp}return _ResultTemp;}int main (){double Num1=3.141592653589793/6;double SinNum1;SinNum1=WdsySin(Num1);printf ("%f\n",SinNum1);return 0;}
关于C++头文件中typedef的意思》急急急!!!
typedef类型定义,也就是自定义一种新的类型,如typedef int INT则INT是一种定义的新类型,它代表的类型为int型。
使用typedef时,对于简单的类型很容易理解,但复杂的如typedef DWORD (PASCAL *pp)(gg);就容易使人迷糊。
不过可以这样:为了定义一种新类型,先考虑用原类型定义一个变量,如为了定义函数指针pp,可以DWORD (PASCAL *pp)(gg)= 0;为了让pp代表这种函数指针类型,即在前面加上typedef。
即typedef DWORD (PASCAL *pp)(gg);在下次想定义一个DWORD (PASCAL *)(gg)类型的函数指针时,就可以用pp p;进行定义。
另外这里PASCAL是定义函数调用方式:#define PASCAL __stdcall你可以自行查找这方面更多资料
深情不及久伴w