using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices; //1加命名空间
namespace WindowsFormsApp1
static class Program
// 引用win32api
[DllImport("kernel32.dll")]
static extern bool FreeConsole();
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
AllocConsole();//调用系统API,调用控制台窗口
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1.Fun();
Console.ReadLine();
Application.Run(new Form1());
FreeConsole();//释放控制台
using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;using System.Runtime.InteropServices; //1加命名空间namespace WindowsFormsApp1{ static class Program { // 引用win32api
在
WinForm
下开发, Log信息不能实时查看(写文件不太实时,
Console
好像也调不出来,反正我没调出来) 没事的时候写了个小Demo, 可实时看Log信息,没啥技术含量
版权是我的, 代码是大家的。
[DllImport("kernel32.dll")]
public static extern Boolean Alloc
Console
();
[DllImport("kernel32.dll")]
public static...
小C在ACM实验室已经呆了1年有余了,听从Caisz老师教诲,编程能力大大提高的同时,独立自学能力、分析问题解决问题的能力…都有很大提高,人也变得积极乐观、自信了。某天晚上,佳佳师姐(小C + 佳佳 == c++?)在qq上告诉小C当天是老师生日(老师只过公历生日)。小C回想进入实验室的首要条件是人品好(孝敬父母、尊敬师长、友爱同学、要有感恩的心),决定在caisz老师的下一个生日给他一个大大惊喜,那么帮忙计算一下到下一个生日还有多少天。
输入格式:
多组测试数据,每组测试数据包含一个当天时间。格式为YYY
由于Windows
控制台
程序
是封装在kernel32.dll,所以有必要讲述一下
WinForm
如何
调用
动态链接库的步骤。
1.首先需要在
调用
窗体中申明using System.Runtime.InteropServices;
2.其次需要在
C#
语言源
程序
中声明外部方法,格式如下:
[DLLImport(“DLL文件”)]
修饰符 extern 返回变量类型 方法名称 (参数
1、类库项目引用System.Windows.Forms并添加引用后,才可创建窗体。
2、
控制台
应用
程序
调用
中间库(DLL)中的方法创建窗体;中间类库使用反射下的Assembly加载包含窗体的类库及创建实例。
注意:1)创建实例时,参数为窗体类的全名(命名空间+类名)。
2)返回值是Object类型,需转化为Form类型。
3)exe(
控制台
程序
)、中...
您可以使用`System.Diagnostics.Process`类来启动
控制台
并将其嵌入到
WinForm
窗口中。
首先,您需要在
WinForm
中添加一个`Panel`控件,然后将其命名为`
console
Panel`。然后使用以下代码启动
控制台
并将其嵌入到该面板中:
```csharp
// 启动
控制台
进程
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = true;
process.Start();
// 将
控制台
窗口嵌入到
WinForm
中
IntPtr handle = process.MainWindowHandle;
SetParent(handle,
console
Panel.Handle);
// 设置
控制台
窗口位置和大小
SetWindowLong(handle, GWL_STYLE, WS_VISIBLE | WS_CHILD);
MoveWindow(handle, 0, 0,
console
Panel.Width,
console
Panel.Height, true);
请注意,您需要导入以下WinAPI函数:
```csharp
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll", SetLastError = true)]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, uint dwNewLong);
[DllImport("user32.dll", SetLastError = true)]
static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
const int GWL_STYLE = -16;
const uint WS_VISIBLE = 0x10000000;
const uint WS_CHILD = 0x40000000;
当您运行应用
程序
时,将会在
WinForm
窗口中嵌入一个
控制台
。您可以使用`process.StandardInput`属性向
控制台
发送命令,并使用`process.StandardOutput`属性获取
控制台
输出。
string a = "我";
string b = "我";
strcmp(a.c_str(),b.c_str());//strcmp的参数是char* 也就是字符数组,string类型要比较加上.c_str()
没想到这么简单
关于vs编译器的一些认识
qq_44777700: