查看: 123|回复: 11

无聊的做了一个bug满天飞的东西(啊哈C无聊插件)

[复制链接]
发表于 2017-1-1 20:00:01 | 显示全部楼层 |阅读模式
(graphics.h不是tc的那个,是我自己图方便写的一个头文件)
这个简化了我许多的工作:
2.png
3.png
4.png

效果看图:
1.png

无聊插件代码:
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
char* GetExePath()
{
    char text[1024];
    char text2[1024];
    int i = 0;
    GetModuleFileName(0,text,sizeof(text));
    for(i = strlen(text);i>=0;i--)
    {
        if(text[i] == '\\')
        {
            break;
        }
    }
    strncpy(text2,text,i);
    return text2;
}
int runcmd(char* lpCmd)
{
    return system(lpCmd);
}
int main(int argc,char* argv[])
{
    char str[4096] = "";
    char str1[1024] = "";
    char str2[1024] = "";
    char str3[1024] = "";
    int t = 0;
    int i;
    if(argc != 6)
    {
        strcpy(str3,GetExePath());
        sprintf(str,"cmd.exe /c start /D %s /B gcc2.exe ",str3);
        if(argc == 1)
        {
            return runcmd(str);
        }
        for(i = 0; i < argc;i++)
        {
            strcat(str,argv[i]);
        }
        return runcmd(str);
    }
    strncat(str1,argv[1],strlen(argv[1]) - 2);
    strcat(str1,".exe");
    remove(str1);
    memset(str1,0,sizeof(str1));
    strncpy(str2,argv[1],strlen(argv[1]) - 2);
    memset(str,0,sizeof(str));
    strcpy(str3,GetExePath());
    sprintf(str,"cmd.exe /c start /D %s /B gcc2.exe -w -o %s %s -lm -L ../lib -static -lgdi32 -L ../lib -static -lgdiplus -L ../lib -static -lmsimg32 -L ../lib -static -lole32 -L ../lib -static -liphlpapi -L ../lib -static -lcomdlg32 -L ../lib -static -lshell32 -L ../lib -static -luser32 -L ../lib -static -lkernel32 -L ../lib -static -lwinmm -L ../lib -static -lws2_32 -DWINVER=0x500",str3,str2,argv[1]);
    return runcmd(str);
}


回复

使用道具 举报

 楼主| 发表于 2017-1-1 20:04:24 | 显示全部楼层
注意:此插件可以让你的程序使用 winsock gdi 等组件
回复 支持 反对

使用道具 举报

发表于 2017-1-2 10:01:44 | 显示全部楼层
然而EasyX比你好多了
不要重复造轮子
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 12:31:22 | 显示全部楼层
4399APPLE 发表于 2017-1-2 10:01
然而EasyX比你好多了
不要重复造轮子

然而这是C++的库                    
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 12:32:08 | 显示全部楼层
4399APPLE 发表于 2017-1-2 10:01
然而EasyX比你好多了
不要重复造轮子

然而这是C++的库                    
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 15:50:29 | 显示全部楼层
4399APPLE 发表于 2017-1-2 10:01
然而EasyX比你好多了
不要重复造轮子

sorry 论坛的bug让我重复发了2次                          
回复 支持 反对

使用道具 举报

发表于 2017-1-2 18:12:42 | 显示全部楼层
初学C 发表于 2017-1-2 12:32
然而这是C++的库

然而你可以手动定义__cplusplus(虽然不好)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 18:24:20 | 显示全部楼层
4399APPLE 发表于 2017-1-2 18:12
然而你可以手动定义__cplusplus(虽然不好)

不可以
EasyX使用了重载等C++特性
(我看了头文件)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-2 18:25:29 | 显示全部楼层
4399APPLE 发表于 2017-1-2 18:12
然而你可以手动定义__cplusplus(虽然不好)

我对这个库比较反感的地方在于
借助tc graphics.h (C图形库)的名声来宣扬自己
实际上是C++(硬说是C语言)
其余的还好
回复 支持 反对

使用道具 举报

发表于 2017-1-2 20:39:24 | 显示全部楼层
初学C 发表于 2017-1-2 18:24
不可以
EasyX使用了重载等C++特性
(我看了头文件)

然而你觉得lib是需要Cpp的吗
回复 支持 反对

使用道具 举报

发表于 2017-1-2 20:40:52 | 显示全部楼层
初学C 发表于 2017-1-2 18:25
我对这个库比较反感的地方在于
借助tc graphics.h (C图形库)的名声来宣扬自己
实际上是C++(硬说是C ...

其实也是借助TC宣传自己反感
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-10 20:04:32 | 显示全部楼层
改进版
[C] 纯文本查看 复制代码
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <windows.h> 
char* GetExePath() 
{ 
    char text[1024]; 
    char text2[1024];
    int i = 0; 
    GetModuleFileName(0,text,sizeof(text)); 
    for(i = strlen(text);i>=0;i--) 
    { 
        if(text[i] == '\\') 
        { 
            break; 
        } 
    } 
    strncpy(text2,text,i); 
    return text2; 
} 
int runcmd(char* lpCmd) 
{ 
    return system(lpCmd); 
} 
int main(int argc,char* argv[]) 
{ 
    char str[4096] = ""; 
    char str1[1024] = ""; 
    char str2[1024] = ""; 
    char str3[1024] = ""; 
    int t = 0; 
    int i; 
    if(argc != 6) 
    { 
        strcpy(str3,GetExePath()); 
        sprintf(str,"cmd.exe /c start /D %s /B gcc2.exe \"",str3); 
        if(argc == 1) 
        { 
            return runcmd(str); 
        } 
        for(i = 0; i < argc;i++) 
        { 
            strcat(str,argv[i]); 
        } 
        return runcmd(str); 
    } 
    strncat(str1,argv[1],strlen(argv[1]) - 2); 
    strcat(str1,".exe"); 
    remove(str1); 
    memset(str1,0,sizeof(str1)); 
    strncpy(str2,argv[1],strlen(argv[1]) - 2); 
    memset(str,0,sizeof(str)); 
    strcpy(str3,GetExePath()); 
    sprintf(str,"cmd.exe /c start /D \"%s\" /B gcc2.exe -w -o \"%s\" \"%s\" -lm -L ../lib -static -lgdi32 -L ../lib -static -lgdiplus -L ../lib -static -lmsimg32 -L ../lib -static -lole32 -L ../lib -static -liphlpapi -L ../lib -static -lcomdlg32 -L ../lib -static -lshell32 -L ../lib -static -luser32 -L ../lib -static -lkernel32 -L ../lib -static -lwinmm -L ../lib -static -lws2_32 -DWINVER=0x500",str3,str2,argv[1]); 
    return runcmd(str); 
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表