控制台

来源:互联网 发布:网站用什么源码好 编辑:程序博客网 时间:2024/04/27 22:10

获取控制台标题栏

char szbuf[256]={0};GetConsoleTitleA(szbuf, 256);printf("%s\n\n", szbuf);

设置控制台标题栏

char szbuf1[]={"zhangtao"};SetConsoleTitleA(szbuf1);


设置控制塔 的文本色和背景色

#include <stdio.h>#include <Windows.h>//一共有16种文字颜色,16种背景颜色,组合有256种。传入的值应当小于256BOOL SetConsoleColor(WORD wAttributes){HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);if (hConsole == INVALID_HANDLE_VALUE)return FALSE;return SetConsoleTextAttribute(hConsole, wAttributes);}int main(){// 设置文本色和背景色SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE);printf("控制台下红字蓝底:\n");printf("MoreWindows\n");printf("-----------------------------------\n\n");// 恢复文本色和背景色SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); printf("还原为控制台下默认文字背景颜色:\n");printf("MoreWindows\n");printf("-----------------------------------\n\n");return 0;}

如果要使控制台窗口支持中文显示,请使用如下方法:

void Ctest1Dlg::OnBnClickedBtnShow(){int a = 3, b = 4;int sum = a + b;AllocConsole();// 开启控制台窗口freopen( "CONOUT$","w",stdout);printf("%d and %d is total: %d\n", a,b,sum);FreeConsole();// 关闭控制台窗口(一般不需要,因为可以手动关闭)}

如果控制台窗口不需要中文显示,可以使用如下方法:

void Ctest1Dlg::OnBnClickedBtnShow(){int a = 3, b = 4;int sum = a + b;AllocConsole();// 开启控制台窗口_cprintf("%d and %d is total: %d\n", a,b,sum);FreeConsole();// 关闭控制台窗口(一般不需要,因为可以手动关闭)}

CUI程序获取的方法:

#include "stdafx.h"#include <stdlib.h>#include <Windows.h>void DumpEnvVariables(PTSTR pEnvBlock[]){PTSTR* pElement = (PTSTR*)pEnvBlock;while (*pElement != NULL){_tprintf(_T("%s\r\n"), *pElement);// 向控制台窗口输出环境变量(格式:变量名=变量值)++pElement;}}//     建立控制台程序是,编译器默认情况下只生成前两个参数,env参数是我手动添加的,// 该参数存储的就是当前进程的环境变量,通过解析该变量的值,就可以得到环境变量的值int _tmain(int argc, _TCHAR* argv[], TCHAR* env[]){DumpEnvVariables(env);system("pause");return 0;}

GUI程序获取方法:

void Ctest1Dlg::DumpEnvironmentStrings(){// 获取完整的环境块PTSTR pEnvBlock = GetEnvironmentStrings();// 将pEnvBlock变量的值备份到的pszCurrent中目的://a、用pEnvBlock释放该内存块。如果pEnvBlock的值被改变了,就没法释放该内存,因为找不到内存的起始地址//b、用pszCurrent来遍历环境变量PTSTR pszCurrent = pEnvBlock;HRESULT hResult = S_OK;PCTSTR pszPos = NULL;int current = 0;while (pszCurrent != NULL){// 过滤掉不属于环境变量的字符串// 为什么要用“=”来判断当前字符串是否是环境变量?// 答:因为环境变量是以“变量名=变量值”形式存在的,不会以“=”开头,所以可以用这个办法来判断if (*pszCurrent != _T('=')) // 打印环境变量{TRACE(pszCurrent);//  在调试窗口下可以看到打印出来的环境变量以及对应的值(格式为:变量名=变量值)TRACE(_T("\r\n"));}else // 打印非环境变量{TRACE(pszCurrent);TRACE(_T("\r\n"));}// 遍历下一个变量++current;// 移动到字符串的末尾while (*pszCurrent != _T('\0'))++pszCurrent;++pszCurrent;// 检查释放是最后的字符串if (*pszCurrent == _T('\0'))break;}// 释放环境块FreeEnvironmentStrings(pEnvBlock);}

windows程序如何获取进程的命令行

// 获得命令行PTSTR pCmdLine = GetCommandLine();// 解析命令行并返回,其中iNumArgs存储命令行的实参数目int iNumArgs;PWSTR *pstr = CommandLineToArgvW(pCmdLine, &iNumArgs); // pCmdLine:in    iNumArgs:out// 遍历解析后的命令行CString str;for (int i = 0 ; i < iNumArgs ; ++i){str = pstr[i];MessageBox(str);}// 释放CommandLineToArgvW函数在内部分配的内存(CommandLineToArgvW函数是在内部分配一块内存,来存储解析后的命令行,。如果这块内存不手动释放,那么只能等到进程结束时才能释放)HeapFree(GetProcessHeap(), 0, pstr);


0 0
原创粉丝点击