怎样用C语言隐藏一个应用程序的窗口??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用C语言隐藏一个应用程序的窗口??相关的知识,希望对你有一定的参考价值。

举个例子,要求编译一个程序,在这个程序中用wmplayer打开一个音频文件,并且把这个wmplayer的对话框给隐藏掉。
求高手清晰解答!
我会加分

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <Winuser.h>
#include <shellapi.h>
#pragma comment(lib,"shell32.lib")
main()
ShellExecuteA(NULL,TEXT("open"), TEXT("wmplayer.exe"), TEXT("K:\\Loonie\\C\\P1\\1.wma"),NULL,SW_HIDE);


上面,音乐文件 全路径例子 是 K:\\Loonie\\C\\P1\\1.wma -- 注意用 双斜杠代替 单斜杠。
换成你的 文件和路径便可。
ShellExecuteA 用于英文。 unicode 我没试过,用ShellExecute 。 SW_HIDE 无窗。追问

如果只保留1,3,5三个头文件好像也能正常运行。

追答

头文件有时互相包括,多写不要紧。

参考技术A

1、调用system函数时用start的/b参数,system("start /b ping 10.10.10.11 -t"); 即可隐藏窗口。
2、system函数:
原型:int system(const char * command);
功能:执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名;
说明:在windows系统中,system函数直接在控制台调用一个command命令。在Linux/Unix系统中,system函数会调用fork函数产生子进程,由子进程来执行command命令,命令执行完后随即返回原调用的进程;
头文件:stdlib.h;
返回值:命令执行成功返回0,执行失败返回-1。
3、例程:

#include<stdio.h>
#include<stdlib.h>
int main()
    system("start /b ping 10.10.10.11 -t");
    return 0;

参考技术B showwindow(hwnd,0);

怎样用C语言编写这个程序

有一个5*5的表格,将1,2,3,4四个数填入到这25个小格中,其中1可以放在任何小格中,2必须和1相邻,3必须和1,2都相邻,4则要和1,2,3,都相邻,怎样填写这些数字才能够使这个表格里所有数字的和最大
高手在哪啊,高手,求高手指点。

#include "stdio.h"
#include "conio.h"
#include "dos.h"

typedef struct

int x;
int y; //二维坐标
int value; //每4进制位的值
int near_flag;
/*权值,
二进制:000
第1位是1表示已经与0相连
第2位是1表示已经与1相连
第3位是1表示已经与2相连
例:
110 :表示与2和1相连,但是不与0相连
111 :表示与0,1,2都相连
001 :表示与0相连,与1,2不相连
*/
xy_value;

xy_value num[26];
/* 判断权位,确定相连的数是否符合 */
jdg_flag()

int i;
for(i=0;i<25;i++)
switch (num[i].value)

case 3: if( num[i].near_flag != 6) return 0; else break;
case 2: if(( num[i].near_flag& 3)!= 3) return 0; else break;
case 1: if(( num[i].near_flag& 1)!= 1) return 0; else break;


return 1;



flag()//初始化权位

int i;
int x,y;
for(i=0;i<25;i++)

x=num[i].x;
y=num[i].y;

if((x-1)>=0) //如果越界,则越界的那边不给予权值
num[i].near_flag|=(1<<(num[(x-1)*5+y].value));
if((x+1)<=4)
num[i].near_flag|=(1<<(num[(x+1)*5+y].value));
if((y-1)>=0)
num[i].near_flag|=(1<<(num[(y-1)+x*5].value));
if((y+1)<=4)
num[i].near_flag|=(1<<(num[(y+1)+x*5].value));



/* 增加1 */
addnum(int i)

num[i].value+=1;
if(num[i].value==4)

num[i].value=0;
i=addnum(i+1);

return i;


main()


int i,sumbuff=0,sum=0;
int x,y;
for( i= 0; i< 26; i++)//初始化结构体

num[i].value= 0;
num[i].x= (int)(i/ 5); //初始化坐标
num[i].y= i% 5;


while( num[25].value== 0)

addnum(0); //0表示从第一位开始
flag();

if(!jdg_flag())


for(i=0;i<25;i++)
num[i].near_flag&=0; /*由于不符合条件,必须消除消权*/
continue;

for( i=0; i<25; i++)
sumbuff+=num[i].value; //能运算到这,说明符合条件.求和
if(sumbuff>sum)//输出目前得到的 满足条件的 最大和的 矩阵

for(x=0;x<5;x++)

for(y=0;y<5;y++)
printf("%d ",num[x*5+y].value);
printf("\n");


sum=sumbuff;
printf("now sum is:%d\n",sum);
printf("\n");

sumbuff=0;


for(x=0;x<5;x++)

for(y=0;y<5;y++)
printf("%d ",num[x*5+y].value);
printf("\n");





这是最笨的方法,一个个比较。。我跑半个小时了 - -!
一共有1000多万亿种,3G CPU,每秒30亿次浮点型运算。假设每次比较一次需要一个浮点型的话,需要100小时左右!那么。。。这个算法 将摇摇无期。。。 跑上一年我都不觉得奇怪。。
算法,基本没有。
1.当成二维坐标。
2.赋值结构体的时候,我是弄成类似25位的4进制数。每个结构体中的value为每位的数值。
26位为循环用的标志位。每次循环,4进制数,增加一。正好可以遍历所有的数。
额。。我写成的是 0,1,2,3四个数字填。
20:54--------------------------
目前情况是这样的:
3 2 1 0 1
1 0 2 2 3
3 2 2 1 2
2 1 0 0 0
0 0 0 0 0
now sum is:28
参考技术A 我目前所想到的,不一定完全正确
第一步:5*5的空格中每个空格初始化为1

第二步:把每个空格中的数字1再+1试试,符合2必须和1相邻条件则加一
然后每行就是21212,21212,21212,21212,21212

然后以此类推
参考技术B 每个格的上下左右是相邻,左上角左下角,右上角右下角,算不算相邻?我试试看能不能编出来追问

只有上下左右才算相邻

参考技术C 这个我以前解过,和一个很有名的堆房子手机游戏city bloxx的部分内容一样。
这个的数学论证方法在这:club。tech。163。com/bbs/mobile_0s22/92272018。html (把。改成.)
参考技术D 你的相邻是什么意思?斜着的(比如左上角算不)算么???一个格子旁边有8个,是最接近的那4个还是8个都可以?追问

只有最近的4个方向才可以

第5个回答  2011-08-29 int i;
int sum;
for(i=1;i<=10;i++)

sum = sum + i;


手头没用C++ 大概这个意思

以上是关于怎样用C语言隐藏一个应用程序的窗口??的主要内容,如果未能解决你的问题,请参考以下文章

c语言能不能将dos窗口隐藏,不是最小化

怎样让C语言编写的程序生成exe文件运行时不显示cmd黑窗口

C语言隐藏窗口

如何隐藏运行窗口(c语言)

怎样用C语言获取屏幕上指定位置处的字符的值?

c ++如何获得系统所有窗口名称 包括隐藏窗口