⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plugin.c

📁 nsis是一个流传比较广的程序安装和解安装封装软件
💻 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 + -