精华内容
下载资源
问答
  • 展开全部指代不同:1、控制台应用:它被设计为与DOS程序兼容,就像在一个32313133353236313431303231363533e4b893e5b19e31333433653431没有自己接口的DOS窗口中执行一样。2、Windows窗体应用程序:运行在用户计算机...

    展开全部

    指代不同:

    1控制台应用:它被设计为与DOS程序兼容,就像在一个32313133353236313431303231363533e4b893e5b19e31333433653431没有自己接口的DOS窗口中执行一样。

    2、Windows窗体应用程序:运行在用户计算机上的客户机应用程序,它显示信息、请求用户输入并通过网络与远程计算机通信。

    3、WPF应用:它是微软推出的基于windows的用户界面框架,是净框架3.0。

    不同的功能:

    1、控制台应用程序:可以在MS-DOS环境中运行的程序,控制台应用程序通常没有可视界面而只是通过字符串显示或监视程序。

    2、Windows窗体应用程序:Windows窗体充分利用了公共语言运行时的安全特性。在浏览器中运行的不受信任的控件和安装在用户硬盘上的完全受信任的应用程序。

    3、WPF应用:提供了统一的编程模型、语言和框架,真正将界面设计人员和开发人员的工作分离开来同时提供了一种新的多媒体交互式用户图形界面。

    扩展资料:

    还有一个不同的特征:

    1、控制台应用:经常用于测试、监控等目的,用户往往只关心数据,不关心界面。

    2、Windows窗体应用程序:应用程序开发中最常见的情况之一是在窗体上显示数据,Windows窗体完全支持数据库处理可以访问数据库中的数据,并在表单上显示和操作数据。

    3、WPF应用:基于DirectX引擎,支持GPU硬件加速,不支持硬件加速时也可以使用软件渲染。

    展开全文
  • 从表面上来看控制台程序运行时是在DOS环境下或者模拟dos环境运行的程序运行... 但是,实质上windows应用程序和控制台应用程序的真正区别是PE文件的结构不同这点不需要我们去关心编译器会根据你的选择去构建生成的ex
        从表面上来看控制台程序运行时是在DOS环境下或者模拟dos环境运行的程序运行时一般会启动一个提示符窗口。而应用程序是Windows环境下的窗口程序。运行时一般会启动一个窗口画面。例如病毒木马就不显示窗口这决定于是否创建了窗口或者是否让窗口显示。  
        但是,实质上windows应用程序和控制台应用程序的真正区别是PE文件的结构不同这点不需要我们去关心编译器会根据你的选择去构建生成的exe文件的PE结构。  
        如何告之编译器你的选择在编译器进行连接的时候给它一个连接参数subsystem:windows或者subsystem:console来告诉它。对于大多数编程工具来说一般在“工程->设置->连接”这个表单里面就可以看到这个参数。  
        但是通常在我们要创建一个新的工程的时候编译器会让我们事先选择好是创建windows应用程序还是创建控制台应用程序。这个参数的设置就不用我们操心了。 
    事实上,控制台程序依然还有区别那就是16位的可以在DOS操作系统环境中运行的DOS程序也可以在window运行通常windows会模拟一个dos环境,这时你会程序窗口与平时的提示符窗口明显不一样和32位通常只能在windows操作系统中运行的程序。通常32位控制台在DOS下运行它的PE结构中会给予DOS环境下运行的一个入口点(DOS文件头这个入口点只有“一行”代码"This program cannot be run in DOS mode"。  
        而在32位系统下操作系统将将查看PE文件头里面的subsystem字段来获得程序将以什么方式运行(windoes或者console)。这个字段里面指示了子系统(CUI对应控制台,GUI对应普通程序,驱动程序等没有子系统)32位的控制台程序当然可以调用API函数,而16位的DOS程序则不可以调用API函数。 
        再补充关于编译器的一点内容通常大学里面学习Cc++时最常用的是VC6.0TC++3.0 和 TC2.0 VC6.0只能写32位程序。也就是不能写Dos程序。而TC++3.0 和 TC2.0这两个编译器是16位的编译器不能写窗口程序,因为调用不了API之所以调用不了固然是编译器的限制,但实质是编译器根本不去使用32位寄存器。  
        那么,如何才能写一个即可以在DOS运行又可以在windows下运行的程序(还要带窗口)那就是要修改exe的PE文件结构使用人工方法粘贴代码。 
     
    展开全文
  • 1.控制台引用程序和Windows应用程序 a.控制台应用程序是命令行,控制台就是DOS窗口; b.windows应用程序大多是windows GUI窗口程序; 通过程序的文件头某个位置指定该程序是:IMAGE_SUBSYSTEM_WINDOWS_GUI; 还是:...

    1.控制台引用程序和Windows应用程序

    a.控制台应用程序是命令行,控制台就是DOS窗口;
    b.windows应用程序大多是windows GUI窗口程序;

    通过程序的文件头某个位置指定该程序是:IMAGE_SUBSYSTEM_WINDOWS_GUI;
    还是:IMAGE_SUBSYSTEM_WINDOWS_CUI。

    展开全文
  • 来源:水如烟 - CSDNBlog 我们知道,桌面应用程序一般有两种类型,一是Windows应用程序,二是控制台应用程序。 如何判断调用自己所在Dll的主程序Windows还是控制台应用程序呢? 解决这个问题,基点是...
    来源:水如烟 - CSDNBlog
      我们知道,桌面应用程序一般有两种类型,一是Windows应用程序,二是控制台应用程序。
      如何判断调用自己所在Dll的主程序是Windows还是控制台应用程序呢?

      解决这个问题,基点是ApplicationBase,ConsoleApplicationBase和WindowsFormsApplicationBase,
    攻击的地方,当然是Application了。

    我也曾想到能否从Thread.CurrentContext,Thread.CurrentThread,AppDomain.CurrentDomain来切入,不过没有去看。现在想“当然”的Application,有点武断,况且,Application源于System.Windows.Forms空间,用它来判断ConsoleApplicationBase,总觉得有些刺。

    据自己的测试,主程序的有三种体现方式,如下:

    Public Enum ApplicationType
     WindowsForms '这是Form启动的Windows应用程序
     ConsoleForms '这是Main启动且含代码Application.Run(New Form)的控制台应用程序
     Console '这是Main启动无窗体的控制台应用程序,就算是Form.ShowDialog也列于此项
    End Enum
    MyApplicationBase.vb

    Imports Microsoft.VisualBasic.ApplicationServices

    Namespace LzmTW.uSystem.uForms

     Public Class MyApplicationBase

     'System.Windows.Forms.Application+ThreadContext
     Private Shared gThreadContextType As uReflection.TypeHelper

     'Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase+WinFormsAppContext
     Private Shared gWinFormsAppContextType As uReflection.TypeHelper
     Private gAppContext As Object = Nothing 'ApplicationContext or WinFormsAppContext
     Private gWindowsFormsApplicationBase As WindowsFormsApplicationBase = Nothing
     Private gCurrentType As ApplicationType

     Shared Sub New()
     gThreadContextType = New uReflection.TypeHelper(GetType(Application), "ThreadContext", True)
     gWinFormsAppContextType = New uReflection.TypeHelper(GetType(WindowsFormsApplicationBase), "WinFormsAppContext", True)
     End Sub
     Sub New()
     GetApplicationContext()

     GetWindowsFormsApplicationBase()

     gCurrentType = GetApplcationType()
     End Sub

     Private Sub GetApplicationContext()
     Dim mCurrentThreadContext As Object
     mCurrentThreadContext = gThreadContextType.MethodInvoke("FromCurrent")
     gThreadContextType.SetCurrentObj(mCurrentThreadContext)
     gAppContext = gThreadContextType.GetMemberValue("ApplicationContext")
     End Sub
     Private Sub GetWindowsFormsApplicationBase()
     If Not gWinFormsAppContextType.CurrentType.IsInstanceOfType(gAppContext) Then Return
     gWinFormsAppContextType.SetCurrentObj(gAppContext)
     gWindowsFormsApplicationBase = CType(gWinFormsAppContextType.GetMemberValue("m_App"), WindowsFormsApplicationBase)
     End Sub

     Private Function GetApplcationType() As ApplicationType
     If gAppContext Is Nothing Then
     Return ApplicationType.Console
     End If
     If gWindowsFormsApplicationBase Is Nothing Then
      Return ApplicationType.ConsoleForms
     End If

     Return ApplicationType.WindowsForms
      End Function

     Public ReadOnly Property ApplicationContext() As ApplicationContext
     Get
     Return CType(gAppContext, ApplicationContext)
     End Get
     End Property

     Public ReadOnly Property WindowsFormsApplicationBase() As WindowsFormsApplicationBase
     Get
     Return gWindowsFormsApplicationBase
     End Get
      End Property
     Public ReadOnly Property CurrentType() As ApplicationType
     Get
     Return gCurrentType
     End Get
     End Property
     Public Enum ApplicationType
    WindowsForms
    ConsoleForms
    Console
    End Enum

    End Class
    End Namespace
    控制台的一个测试:

    Public Class Program
    Shared Sub Main()
    Console.WriteLine((New LzmTW.uSystem.uForms.MyApplicationBase).CurrentType.ToString)
    Application.Run(New Form1)
    Console.WriteLine((New LzmTW.uSystem.uForms.MyApplicationBase).CurrentType.ToString)
    Console.Read()
    End Sub
    End Class
    而Form1中有一个按钮也来测试

    Private Sub ButtonTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTest.Click
    Console.WriteLine((New LzmTW.uSystem.uForms.MyApplicationBase).CurrentType.ToString)
    End Sub
    那么,显示的结果,先是Console,后是ConsoleForms,最后是Console。

    MyApplicationBase有没有用?

    这当然看自己的需求。
    举例来说,如果有一个类需要输出信息,如是控制台应用程序,就输出到控制台,如是WinForm程序,就以Form的形式显示,
    这个时候,就需要MyApplicationBase来判定的了。

    另,如果是WinForm应用程序,MyApplicationBase.WindowsFormsApplicationBase其实就是My.Application,
    这里有大量的信息供自己使用。

    个人感觉,这个类可能还是蛮有用的。 
    展开全文
  • 我们知道,桌面应用程序一般有两种类型,一是Windows应用程序,二是控制台应用程序。 如何判断调用自己所在Dll的主程序Windows还是控制台应用程序呢? 解决这个问题,基点是ApplicationBase,...
  • 轻松转换win程序和控制台程序

    千次阅读 2009-04-28 13:02:00
    其实,一个程序要将其编译成win程序或控制台程序(对应WinMain或main),在vs08中,只需改动一个选项,项目->属性->Linker->子系统 改为windows就是win程序,相应的会寻找WinMain函数,改为Console就是控制台的,...
  • 如果是dos控制台程序,那么main是入口函数,在VS2010中新建项目为“win32控制台应用程序” 而如果入口函数指定不当,很显然c语言运行时找不到配合函数,它就会报告错误。 修改设置适应你的需求 如果你需要的是...
  • 这是《Programming Microsoft Windows with C#》(作者是Charles Petzold...如果将可执行文件标记为控制台应用程序并从Windows启动,则Windows操作系统将创建一个命令提示符窗口,该窗口将启动该程序并显示该程序的...
  • Cmder是一个软件包,是由于Windows上没有可用的控制台模拟器而完全出于沮丧而创建的。 它基于进行了重大的配置大修,具有Monokai配色方案,出色的 (通过进一步增强)自定义的提示布局。 为什么使用它 Cmder的...
  • 在vs2008中,可通过项目属性配置对项目性质进行更改,如将win32控制台程序,改为应用程序。方法为:工程->属性->...配置为控制台程序:Console (/SUBSYSTEM:CONSOLE)配置为应用程序:Windows (/SUBSYSTEM:WINDOWS)
  • 其主要内容是: <br>Windows故障恢复控制台的功能是帮助基于Windows的计算机在未正确...建议只有高级用户(能够使用基本命令确定并找到有问题的驱动程序和文件)才使用此方法。此外,还要求您是本地管理员。
  • 1.在空项目的Resouce FIles中右击创建一个新的.rc文件。 2.选中这个.rc文件右击在界面中选择导入icon 3.选中icon,将icon的ID更改为IDC_MAINFRAME。 4.重新编译。 转载于:...
  • 因为CC ++(以及许多其他不使用虚拟机或解释器的编程语言)被编译为直接在计算机硬件上运行的本机代码(汇编程序)。这意味着在运行中间代码(虚拟机的“汇编器”,这是java中的字节码.NET中的IL)的硬件之上没有...
  • 1,实现对java程序的编译运行在subline控制台1.1,直接在安装路径下找到*\Packages\Java.sublime-package文件,用解压缩软件打开,找到JavaC.sublime-build文件 1.2,将shell_cmd中的javac改成run,保存后将原...
  • 所谓的控制台,其实是一种文本,所以,控制台程序也就是基于文本的应用程序。说起应用程序,就不得不说进程,一个应用程序的实例(也就是运行着的应用程序)就是一个进程,所谓进程,其实也是一个空架子,它由一个...
  • 首先是两个程序,分别是socket的客户端服务端。(在windows系统vc6.0编译)服务器端:#include <Winsock2.h>#include <stdio.h>#pragma comment(lib,"WS2_32.lib")void main(){ WSADATA wsd; SOCKET ...
  • 一个控制台应用程序,用于在Windows 10上创建移动热点。 语法: mobilehotspot.exe SSID PASSPHRASE 移动热点将使用最佳的可用连接配置文件自动创建,并且在关闭应用程序之前将保持活动状态。 输出格式 可以从自动...
  • 控制台程序是为了兼容dos而设立的,这种程序的运行就好像在一个窗口中运行一样,没有自己的界面(就是c++vc++中的黑框)dos中只能是一个任务执行完之后再执行另一个任务。单任务。 此问题是由于使用VS编写程序时...
  • C程序中修改Windows控制台颜色

    千次阅读 2015-03-23 13:45:04
    C程序中修改Windows控制台颜色    其实,Windows的CMD可以Linux下的终端一样可以有五颜六色,目前我在网上找到2种方法可以修改Windows的CMD,当然都是在代码中修改的。在“CMD”->“属性”->“颜色”,...
  • 经过测试,在所制作的带界面的动态库在windows系统中的控制台程序和MFC程序都能顺利调用。 动态库制作 1、建立MFC的动态库 2、添加资源Dialog 右键dll项目,添加->资源->Dialog,在窗体上右键添加类,命名类名...
  • Windows是怎么区分可执行文件非可执行文件的呢?我们调用LoadLibrary传递了一个文件名,系统是如何判断这个文件是一个合法的动态库呢?这就涉及到PE文件结构了。 PE文件的结构一般来说如
  • windows控制台程序自动重启

    千次阅读 2006-10-08 01:37:00
    有时控制台程序由于日志更改或其他原因需要定时重启,在Linux平台有很多工具可以实现,但是windows命令有限,实现起来有些麻烦。最近有个项目需要处理这种情况,搜索了很久,并写了一些代码才解决。程序为java编写,...
  • 您的问题在于您正在尝试控制一个交互式应用程序。stdout.read()将继续读取,直到它到达流,文件或管道的末尾。不幸的是,如果是交互式程序,管道只有在程序退出时才关闭;如果您发送的命令不是"quit"以外的其他命令,...
  • 它工作正常,但是当我输入所有变量时,我会得到计算出的V值,然后控制台应用程序立即关闭.我需要的是微不足道的:命令或函数的名称,在计算完最后一个值后,它将使控制台保持打开状态.如果您知道的话,请给个提示.print ...
  • ReadCrd是一个跨平台的控制台应用程序,可打印Cardfile for Windows 3.x文件( CRD扩展名)的Cardfile for Windows 3.x内容。 文件签名必须为MGC或RRG 。 用法 将Linux或Windows二进制文件下载到带有CRD文件的...
  • 在win32控制台程序中,如何获取windows消息?比如键盘鼠标事件的消息。
  • 故障恢复控制台Windows 2000/XP/2003操作系统中用于修复系统的工具,它可以启用禁用系统服务、格式化磁盘、挽救磁盘数据、修复系统故障,是我们无法进入系统(包括安全模式)时修复系统的“法宝”,被用户形象地...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,211
精华内容 1,284
关键字:

windows程序和控制台程序