📄 plugin.c
字号:
#include "stdafx.h"#include "Plugin.h"#include "Buffers.h"#include "System.h"HWND g_hwndParent;int g_stringsize;stack_t **g_stacktop;char *g_variables;char *AllocString(){ return (char*) GlobalAlloc(GPTR,g_stringsize);}char *AllocStr(char *str){ return lstrcpy(AllocString(), str);}char* popstring(){ char *str; stack_t *th; if (!g_stacktop || !*g_stacktop) return NULL; th=(*g_stacktop); str = AllocString(); lstrcpy(str,th->text); *g_stacktop = th->next; GlobalFree((HGLOBAL)th); return str;}char *pushstring(char *str){ stack_t *th; if (!g_stacktop) return str; th=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)+g_stringsize); lstrcpyn(th->text,str,g_stringsize); th->next=*g_stacktop; *g_stacktop=th; return str;}char *getuservariable(int varnum){ if (varnum < 0 || varnum >= __INST_LAST) return AllocString(); return AllocStr(g_variables+varnum*g_stringsize);}char *setuservariable(int varnum, char *var){ if (var != NULL && varnum >= 0 && varnum < __INST_LAST) { lstrcpy (g_variables + varnum*g_stringsize, var); } return var;}// Updated for int64 and simple bitwise operations__int64 myatoi(char *s){ __int64 v=0; // Check for right input if (!s) return 0; if (*s == '0' && (s[1] == 'x' || s[1] == 'X')) { s++; for (;;) { int c=*(++s); if (c >= '0' && c <= '9') c-='0'; else if (c >= 'a' && c <= 'f') c-='a'-10; else if (c >= 'A' && c <= 'F') c-='A'-10; else break; v<<=4; v+=c; } } else if (*s == '0' && s[1] <= '7' && s[1] >= '0') { for (;;) { int c=*(++s); if (c >= '0' && c <= '7') c-='0'; else break; v<<=3; v+=c; } } else { int sign=0; if (*s == '-') sign++; else s--; for (;;) { int c=*(++s) - '0'; if (c < 0 || c > 9) break; v*=10; v+=c; } if (sign) v = -v; } // Support for simple ORed expressions if (*s == '|') { v |= myatoi(s+1); } return v;}void myitoa64(__int64 i, char *buffer){ char buf[128], *b = buf; if (i < 0) { *(buffer++) = '-'; i = -i; } if (i == 0) *(buffer++) = '0'; else { while (i > 0) { *(b++) = '0' + ((char) (i%10)); i /= 10; } while (b > buf) *(buffer++) = *(--b); } *buffer = 0;}int popint(){ int value; char *str; if ((str = popstring()) == NULL) return -1; value = (int) myatoi(str); GlobalFree(str); return value;}void pushint(int value){ char buffer[1024]; wsprintf(buffer, "%d", value); pushstring(buffer);}char *copymem(char *output, char *input, int size){ char *out = output; if ((input != NULL) && (output != NULL)) while (size-- > 0) *(out++) = *(input++); return output;}HANDLE GlobalCopy(HANDLE Old){ SIZE_T size = GlobalSize(Old); return copymem(GlobalAlloc(GPTR, size), Old, (int) size);}#ifdef _DEBUGvoid main(){}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -