ডাব্লুপিএফ অ্যাপ্লিকেশন থেকে কনসোল আউটপুট নেই?


112

আমি খুব সাধারণ ডাব্লুপিএফ পরীক্ষার অ্যাপ্লিকেশন থেকে কনসোল.উরাইটলাইন () ব্যবহার করছি, কিন্তু যখন আমি কমান্ড লাইন থেকে অ্যাপ্লিকেশনটি চালাচ্ছি তখন কনসোলে কিছু লেখা হচ্ছে না। কেউ কি জানেন যে এখানে কী চলছে?

আমি ভিএস ২০০৮ সালে ডাব্লুপিএফ অ্যাপ্লিকেশন তৈরি করে এবং সহজেই কনসোল.ড্রাইটলাইন ("পাঠ্য") যুক্ত করে মৃত্যুদন্ড কার্যকর করে এটি পুনরুত্পাদন করতে পারি। কোন ধারনা?

কনসোল.ওয়ারাইটলাইন () এর মতো এখনই আমার যা দরকার তা-ই সহজ। আমি বুঝতে পারি আমি লগ 4 নেট বা অন্য কোনও লগিং সমাধান ব্যবহার করতে পারি, তবে এই অ্যাপ্লিকেশনটির জন্য আমার এতটা কার্যকারিতা দরকার নেই।

সম্পাদনা: আমার মনে রাখা উচিত ছিল যে কনসোল.উরাইটলাইন () কনসোল অ্যাপ্লিকেশনগুলির জন্য। ওহ ভাল, কোন বোকা প্রশ্ন, তাই না? :-) আমি এখনই সিস্টেম.ডায়াগনস্টিক্স.ট্রেস.উরাইটলাইন () এবং ডিবাগভিউ ব্যবহার করব।


এখানে এবং এখানে সম্ভাব্য নকল (নতুন, তবে কার্নেল 32.dll থেকে অ্যাটাচ কনসোল ব্যবহার করে কিছু আকর্ষণীয় উত্তর সহ )
সর্বাধিক

1
@ ম্যাক্স, এই প্রশ্নগুলি এই প্রশ্নের সম্ভাব্য সদৃশ । আপনি যে পোস্ট করেছেন সেগুলির যে কোনও একটির আগে এই প্রশ্নটি জিজ্ঞাসা করা হয়েছিল।
রব

উত্তর:


90

আসলে কোনও কনসোল.তাই রাইট পদ্ধতিতে কল করার আগে আপনাকে ম্যানুয়ালি একটি কনসোল উইন্ডো তৈরি করতে হবে। এটি কনসোলটিকে প্রজেক্টের ধরণ পরিবর্তন না করে সঠিকভাবে কাজ করতে দীক্ষা করবে (যা ডাব্লুপিএফ অ্যাপ্লিকেশনটির জন্য কাজ করবে না)।

কনসোলম্যানেজার শ্রেণিটি কেমন দেখতে পারে এবং কীভাবে এটি কনসোলটিকে সক্রিয় / অক্ষম করতে ব্যবহার করতে পারে তা প্রকল্পের স্বতন্ত্রভাবে একটি সম্পূর্ণ উত্স কোড উদাহরণ।

নিম্নলিখিত শ্রেণীর সাথে, আপনাকে ConsoleManager.Show()কোনও কল করার আগে কোথাও লিখতে হবে Console.Write...

[SuppressUnmanagedCodeSecurity]
public static class ConsoleManager
{
    private const string Kernel32_DllName = "kernel32.dll";

    [DllImport(Kernel32_DllName)]
    private static extern bool AllocConsole();

    [DllImport(Kernel32_DllName)]
    private static extern bool FreeConsole();

    [DllImport(Kernel32_DllName)]
    private static extern IntPtr GetConsoleWindow();

    [DllImport(Kernel32_DllName)]
    private static extern int GetConsoleOutputCP();

    public static bool HasConsole
    {
        get { return GetConsoleWindow() != IntPtr.Zero; }
    }

    /// <summary>
    /// Creates a new console instance if the process is not attached to a console already.
    /// </summary>
    public static void Show()
    {
        //#if DEBUG
        if (!HasConsole)
        {
            AllocConsole();
            InvalidateOutAndError();
        }
        //#endif
    }

    /// <summary>
    /// If the process has a console attached to it, it will be detached and no longer visible. Writing to the System.Console is still possible, but no output will be shown.
    /// </summary>
    public static void Hide()
    {
        //#if DEBUG
        if (HasConsole)
        {
            SetOutAndErrorNull();
            FreeConsole();
        }
        //#endif
    }

    public static void Toggle()
    {
        if (HasConsole)
        {
            Hide();
        }
        else
        {
            Show();
        }
    }

    static void InvalidateOutAndError()
    {
        Type type = typeof(System.Console);

        System.Reflection.FieldInfo _out = type.GetField("_out",
            System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);

        System.Reflection.FieldInfo _error = type.GetField("_error",
            System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);

        System.Reflection.MethodInfo _InitializeStdOutError = type.GetMethod("InitializeStdOutError",
            System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);

        Debug.Assert(_out != null);
        Debug.Assert(_error != null);

        Debug.Assert(_InitializeStdOutError != null);

        _out.SetValue(null, null);
        _error.SetValue(null, null);

        _InitializeStdOutError.Invoke(null, new object[] { true });
    }

    static void SetOutAndErrorNull()
    {
        Console.SetOut(TextWriter.Null);
        Console.SetError(TextWriter.Null);
    }
} 

5
প্রথমে AttachConsole (-1) কল করার চেষ্টা করা সম্ভব এবং প্যারেন্ট প্রসেসের কনসোলের সাথে সংযুক্ত করার জন্য তার ফেরতের মানটি পরীক্ষা করা সম্ভব; যদি এটি মিথ্যা ফেরত দেয়, অলোকসনসোলে কল করুন। যাইহোক, অ্যাপ্লিকেশনটি এখনও প্রথমে 'রিটার্ন' করে এবং তারপরে কনসোলে আউটপুট দেয়, আমি যদি কোনও সমাধান খুঁজে পাই তবে আমি আরও পোস্ট করব। এছাড়াও, যদি আপনি কনসোল অ্যাপ্লিকেশনটিতে ডাব্লুপিএফ অ্যাপ্লিকেশন টাইপ সেট করেন, সমস্যাটি অদৃশ্য হয়ে যায় তবে প্রোগ্রামটি শুরু হওয়ার পরে সংক্ষিপ্তভাবে স্ক্রিনে প্রদর্শন না করে আপনি কনসোলটি বিচ্ছিন্ন করতে পারবেন না, সুতরাং এটি বিন্দু বিশ্রী দেখায় (তবে আপনি যদি এটির সাথে থাকতে পারেন তবে , এটি দুর্দান্ত কাজ করে)।
অ্যালেক্স পাভেন

2
হ্যাঁ, আসলে না, আমি মনে করি না এটি উভয়ভাবেই সম্ভব; কনসোল অ্যাপ্লিকেশনটিকে তার পিই শিরোলেখটিতে সিইউআই হিসাবে চিহ্নিত করা হয়েছে এবং এটি স্বয়ংক্রিয়ভাবে সিএমডির সাথে ভালভাবে সহযোগিতা করে। অন্যদিকে একটি জিইউআই অ্যাপ্লিকেশন তাত্ক্ষণিকভাবে সিএমডি-তে নিয়ন্ত্রণ ফিরিয়ে দেয় এবং এটি যদি কনসোলটিতে পুনরায় সংযোগ করতে পারে তবে পাইপলাইনের পরবর্তী আউটপুটগুলির সাথে পঠন এবং লেখাটি মিলিত হবে, যা সম্ভবত খুব খারাপ। অন্যদিকে আপনি যদি অ্যাপ্লিকেশনটিকে কনসোল অ্যাপ্লিকেশন হিসাবে চিহ্নিত করেন তবে আপনাকে কেবল অ্যাপ স্টার্টআপে সিএমডি সংক্ষেপে দেখানোর সাথে থাকতে হবে; তারপরে আপনি ফ্রি কনসোলটি আলাদা করতে এবং সংযুক্ত / পরে ইত্যাদি সংযুক্ত করতে ব্যবহার করতে পারেন
অ্যালেক্স

1
ব্রায়ানের কাছ থেকে উত্তর কার্যকরভাবে এবং আরও সহজ কাজ করে কেন এটি করুন।
ওয়াটার জ্যানসেন্স

2
সুস্পষ্ট হতে পারে তবে আমি দেখতে পেলাম যে ভিজুয়াল স্টুডিও ডিবাগার সংযুক্ত থাকাকালীন কনসোল.ওরাইটলাইন এখনও এই কৌশলটি ব্যবহার করে কাজ করেনি। আমি যখন ভিএস এর বাইরে অ্যাপটি চালালাম তখন এটি একটি ট্রিট কাজ করেছিল। ধন্যবাদ।
aboy021

2
@ মারক হ্যাঁ, তবে এটি কাজ করে না ... এমন একটি SetConsoleCtrlHandlerফাংশন রয়েছে যা CTRL_CLOSE_EVENTইভেন্টটি ঘটে যখন আপনাকে জানাতে দেয় তবে আপনি এটি দিয়ে কিছুই করতে পারবেন না, এমন কিছুই নেই যা আপনার অ্যাপ্লিকেশনটি চালিয়ে যাওয়ার অনুমতি দেয় allowing আপনি বন্ধ হয়ে যাবে। যদি আপনি হ্যাকিংয়ের মতো মনে করেন তবে আপনি সম্ভবত কনসোল প্রক্রিয়াটির জন্য উইন্ডোজ বার্তা হ্যান্ডলারটি স্যুপ করতে পারেন এবং কেবল WM_CLOSE বার্তাটি ফেলে দিতে পারেন, আমি এটি কখনও চেষ্টা করি নি তবে এটি কার্যকর হতে পারে। এটি কেবল অন্য উইন্ডো তবে এটির সাথে বলা হয়েছে, আপনি যদি এই ধারণাটি বিনোদন করতে না চান তবে আপনার প্রচেষ্টা সম্ভবত অন্য কোনও কিছু করে ব্যয় করা ভাল।
জন লিডেগ্রেন

129

প্রকল্পে ডান ক্লিক করুন, "সম্পত্তি", "অ্যাপ্লিকেশন" ট্যাব, "আউটপুট ধরণ" কে "কনসোল অ্যাপ্লিকেশন" এ পরিবর্তন করুন এবং তারপরে এটির একটি কনসোলও থাকবে।


2
এটির সাথে একমাত্র ইস্যুটি আপনার পটভূমিতে একটি সেন্টিমিডি খোলা থাকবে তবে এটি কাজ করে :)।
ইয়াকাচউ

5
CMd.exe (একটি অ্যাপ্লিকেশনের জন্য দুটি উইন্ডো তৈরি করা হয়েছে) থেকে অ্যাপ্লিকেশনটি কার্যকর না করা হলে দুর্দান্ত, তবে কমান্ড-লাইন উইন্ডো তৈরি করা হবে। তবে এর জন্য এর সমাধানও রয়েছে: আপনি শো-উইন্ডো দ্বারা এইচএমডি উইন্ডোটি লুকিয়ে রাখতে পারেন (hWnd, 0)। stackoverflow.com/a/10416180/1457197 । এই সমাধানটি ব্যবহার করে আপনি কনসোলে টেক্সটটি কেবল তখনই দেখতে পাবেন যখন ডাব্লুপিএফ অ্যাপ্লিকেশন কমান্ড-লাইন থেকে সম্পাদিত হবে।
কপারনিক

নোট করুন ব্লেন্ডে কাজ করার সময় আপনাকে এটি "উইন্ডো অ্যাপ্লিকেশন" এ ফিরে যেতে হবে, কারণ এটি "কনসোল অ্যাপ্লিকেশন" প্রকারের জন্য কেবল এক্সএএমএল (ডিজাইন দৃশ্যে অ্যাক্সেস ছাড়াই) দেখায়। (ব্লেন্ড 2013 হিসাবে)

1
সঠিক উত্তর নয়। প্রধান উইন্ডোজ লুকায়। শুধু কনসোল উঠে আসে।
যশ

128

তুমি ব্যবহার করতে পার

Trace.WriteLine("text");

এটি ভিজ্যুয়াল স্টুডিওতে "আউটপুট" উইন্ডোতে আউটপুট দেবে (ডিবাগ করার সময়)।

ডায়াগনস্টিকস সমাবেশটি অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন:

using System.Diagnostics;

9
এটি সেরা উত্তর, তবে সর্বোচ্চ রেটিং নেই
কিলটেক

আমি সম্মতি জানাই - এটি ঠিক এটির জন্য জিজ্ঞাসা করছে। কনসোল.উরাইটলাইন () - এর দুর্দান্ত বিকল্প - উত্তর হিসাবে চিহ্নিত সমাধানটি একটি ঝরঝরে অনুশীলন তবে একটি উত্পাদনের অ্যাপ্লিকেশনটিতে অন্তর্ভুক্ত করা অযৌক্তিক।
নিশাচর

4
উইন্ডোজ স্টোর অ্যাপ্লিকেশনগুলির জন্য পিএস (উইন্ডোজ রানটাইম) ট্রেস.উরাইটলাইন এর সমতুল্য হলেন ডিবাগ.উইরাইটলাইন ()
নিখরচায়িত

এটি একটি সহজ, পরিষ্কার সমাধান, তবে এটি আমার পক্ষে কার্যকর হয়নি। আপডেট-ডাটাবেসের সময় সত্তা ফ্রেমওয়ার্কের বীজ পদ্ধতিতে কাজ করেনি। অন্যথায়, অন্য কোথাও কাজ করে!
চার্লস ডব্লিউ

এটিই সেরা সমাধান। উত্তরে যদি Console.WriteLineউত্তরটিও ব্যাখ্যা করে যে ডাব্লুপিএফ অ্যাপ্লিকেশনগুলির জন্য মোটেই নয়, এবং এটি কেবল কমান্ড-লাইন অ্যাপ্লিকেশনগুলির জন্যই করা হয়েছে better
অ্যান্ড্রু কোস্টার

12

যদিও জন লেডেগ্রেন এই ধারণার শুটিং চালিয়ে যাচ্ছেন, ব্রায়ান ঠিক বলেছেন। আমি সবেমাত্র এটি ভিজ্যুয়াল স্টুডিওতে কাজ করে এসেছি।

একটি ডাব্লুপিএফ অ্যাপ্লিকেশন সাফ হওয়ার জন্য ডিফল্টরূপে কনসোল উইন্ডো তৈরি করে না।

আপনাকে একটি ডাব্লুপিএফ অ্যাপ্লিকেশন তৈরি করতে হবে এবং তারপরে আউটপুট টাইপটিকে "কনসোল অ্যাপ্লিকেশন" এ পরিবর্তন করতে হবে। আপনি যখন প্রকল্পটি চালাবেন আপনি তার সামনে আপনার ডাব্লুপিএফ উইন্ডো সহ একটি কনসোল উইন্ডো দেখতে পাবেন।

এটি দেখতে খুব সুন্দর দেখাচ্ছে না, তবে আমি এটিকে সহায়ক হিসাবে পেয়েছি কারণ আমি চেয়েছিলাম যে আমার অ্যাপ্লিকেশনটি সেখানে প্রতিক্রিয়া সহ কমান্ড লাইন থেকে চালিত করা উচিত এবং তারপরে নির্দিষ্ট কমান্ড বিকল্পের জন্য আমি ডাব্লুপিএফ উইন্ডোটি প্রদর্শন করব।


1
পারফেক্ট। কাজ করে।
হিমশীতল

10

কমান্ড লাইন পুনর্নির্দেশটি ব্যবহার করে কনসোলের উদ্দেশ্যে আউটপুট দেখা সম্ভব

উদাহরণ স্বরূপ:

C:\src\bin\Debug\Example.exe > output.txt

output.txtফাইলগুলিতে সমস্ত কন্টেন্ট লিখবে ।


সেরা উত্তর যেমন এটি সহজ এবং উত্সে কোনও পরিবর্তন প্রয়োজন হয় না
বাকলি

9

পুরাতন পোস্ট, তবে আমি এটিতে ছুটে এসেছি আপনি যদি ভিজ্যুয়াল স্টুডিওতে ডাব্লুপিএফ প্রকল্পে আউটপুট থেকে কিছু আউটপুট দেওয়ার চেষ্টা করে থাকেন তবে সমসাময়িক পদ্ধতিটি হ'ল:

এটি অন্তর্ভুক্ত করুন:

using System.Diagnostics;

এবং তারপর:

Debug.WriteLine("something");

4

আমি আউটপুট উইন্ডোতে ব্যবহারের জন্য কনসোল.উরাইটলাইন () ব্যবহার করি ...


4
এটি একটি 4 বছরের পুরানো প্রশ্ন যা আমি প্রথম দেখলাম এটি ভারী সম্পাদিত হয়েছিল। এখন অবশ্যই প্রশ্নটি আরও ভাল করে বলা হয়েছে এবং আমার প্রতিক্রিয়াটি অপ্রাসঙ্গিক হয়ে গেছে।
ইরোডওয়াল্ড

1

আমি একটি সমাধান তৈরি করেছি, ভ্যারিয়াস পোস্টের তথ্য মিশ্রিত করেছি।

এটি একটি ফর্ম, এতে একটি লেবেল এবং একটি পাঠ্যবাক্স রয়েছে। কনসোল আউটপুটটি পাঠ্যবক্সে পুনঃনির্দেশিত হয়েছে।

কনসোলভিউ নামে একটি শ্রেণি রয়েছে যা তিনটি পাবলিক পদ্ধতি প্রয়োগ করে: শো (), বন্ধ () এবং প্রকাশ ()। শেষটি হল ছুটির জন্য কনসোলটি খুলুন এবং দেখার ফলাফলের জন্য ক্লোজ বোতামটি সক্রিয় করুন।

ফর্মগুলিকে ফ্রমকনসোল বলা হয়। এখানে এক্সএএমএল এবং সি # কোড রয়েছে।

ব্যবহার খুব সহজ:

ConsoleView.Show("Title of the Console");

কনসোল খুলুন জন্য। ব্যবহার করুন:

System.Console.WriteLine("The debug message");

কনসোলে আউটপুট পাঠ্যের জন্য।

ব্যবহার করুন:

ConsoleView.Close();

কনসোল বন্ধ করুন

ConsoleView.Release();

পাতা কনসোলটি খুলবে এবং ক্লোজ বোতামটি সক্ষম করে

XAML

<Window x:Class="CustomControls.FrmConsole"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:CustomControls"
    mc:Ignorable="d"
    Height="500" Width="600" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" Topmost="True" Icon="Images/icoConsole.png">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="40"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="40"/>
    </Grid.RowDefinitions>
    <Label Grid.Row="0" Name="lblTitulo" HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Center" FontFamily="Arial" FontSize="14" FontWeight="Bold" Content="Titulo"/>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="10"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="10"/>
        </Grid.ColumnDefinitions>
        <TextBox Grid.Column="1" Name="txtInner" FontFamily="Arial" FontSize="10" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" TextWrapping="Wrap"/>
    </Grid>
    <Button Name="btnCerrar" Grid.Row="2" Content="Cerrar" Width="100" Height="30" HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Center"/>
</Grid>

উইন্ডোর কোড:

partial class FrmConsole : Window
{
    private class ControlWriter : TextWriter
    {
        private TextBox textbox;
        public ControlWriter(TextBox textbox)
        {
            this.textbox = textbox;
        }

        public override void WriteLine(char value)
        {
            textbox.Dispatcher.Invoke(new Action(() =>
            {
                textbox.AppendText(value.ToString());
                textbox.AppendText(Environment.NewLine);
                textbox.ScrollToEnd();
            }));
        }

        public override void WriteLine(string value)
        {
            textbox.Dispatcher.Invoke(new Action(() =>
            {
                textbox.AppendText(value);
                textbox.AppendText(Environment.NewLine);
                textbox.ScrollToEnd();
            }));
        }

        public override void Write(char value)
        {
            textbox.Dispatcher.Invoke(new Action(() =>
            {
                textbox.AppendText(value.ToString());
                textbox.ScrollToEnd();
            }));
        }

        public override void Write(string value)
        {
            textbox.Dispatcher.Invoke(new Action(() =>
            {
                textbox.AppendText(value);
                textbox.ScrollToEnd();
            }));
        }

        public override Encoding Encoding
        {
            get { return Encoding.UTF8; }

        }
    }

    //DEFINICIONES DE LA CLASE
    #region DEFINICIONES DE LA CLASE

    #endregion


    //CONSTRUCTORES DE LA CLASE
    #region CONSTRUCTORES DE LA CLASE

    public FrmConsole(string titulo)
    {
        InitializeComponent();
        lblTitulo.Content = titulo;
        Clear();
        btnCerrar.Click += new RoutedEventHandler(BtnCerrar_Click);
        Console.SetOut(new ControlWriter(txtInner));
        DesactivarCerrar();
    }

    #endregion


    //PROPIEDADES
    #region PROPIEDADES

    #endregion


    //DELEGADOS
    #region DELEGADOS

    private void BtnCerrar_Click(object sender, RoutedEventArgs e)
    {
        Close();
    }

    #endregion


    //METODOS Y FUNCIONES
    #region METODOS Y FUNCIONES

    public void ActivarCerrar()
    {
        btnCerrar.IsEnabled = true;
    }

    public void Clear()
    {
        txtInner.Clear();
    }

    public void DesactivarCerrar()
    {
        btnCerrar.IsEnabled = false;
    }

    #endregion  
}

কনসোলভিউ ক্লাসের কোড

static public class ConsoleView
{
    //DEFINICIONES DE LA CLASE
    #region DEFINICIONES DE LA CLASE
    static FrmConsole console;
    static Thread StatusThread;
    static bool isActive = false;
    #endregion

    //CONSTRUCTORES DE LA CLASE
    #region CONSTRUCTORES DE LA CLASE

    #endregion

    //PROPIEDADES
    #region PROPIEDADES

    #endregion

    //DELEGADOS
    #region DELEGADOS

    #endregion

    //METODOS Y FUNCIONES
    #region METODOS Y FUNCIONES

    public static void Show(string label)
    {
        if (isActive)
        {
            return;
        }

        isActive = true;
        //create the thread with its ThreadStart method
        StatusThread = new Thread(() =>
        {
            try
            {
                console = new FrmConsole(label);
                console.ShowDialog();
                //this call is needed so the thread remains open until the dispatcher is closed
                Dispatcher.Run();
            }
            catch (Exception)
            {
            }
        });

        //run the thread in STA mode to make it work correctly
        StatusThread.SetApartmentState(ApartmentState.STA);
        StatusThread.Priority = ThreadPriority.Normal;
        StatusThread.Start();

    }

    public static void Close()
    {
        isActive = false;
        if (console != null)
        {
            //need to use the dispatcher to call the Close method, because the window is created in another thread, and this method is called by the main thread
            console.Dispatcher.InvokeShutdown();
            console = null;
            StatusThread = null;
        }

        console = null;
    }

    public static void Release()
    {
        isActive = false;
        if (console != null)
        {
            console.Dispatcher.Invoke(console.ActivarCerrar);
        }

    }
    #endregion
}

আমি আশা করি এই ফলাফলটি কার্যকর।



-17

যতদূর আমি জানি, কনসোল.উরাইটলাইন () কেবল কনসোল অ্যাপ্লিকেশনগুলির জন্য। আমি মনে করি এটি আপনার সমস্যা।


1
আমি ডাব্লুপিএফ সম্পর্কে জানি না, তবে এটি অবশ্যই উইনফোর্ডসের ক্ষেত্রে নয়। কনসোল.ওরাইটলাইন সেখানে কাজ করে ঠিক আছে, তবে, আপনি কনসোলটি দেখতে পাবেন না, আপনি এটি ডিবাগার আউটপুট উইন্ডোতে দেখতে পাবেন এবং যদি আপনি স্ট্যান্ডার্ড আউটপুট শোনেন।
জেফ ইয়েটস

2
আপনি প্রকল্পটি একটি কনসোল অ্যাপ্লিকেশনটিতে সেট করতে পারেন এবং এটি এখনও একটি উইন্ডোজ অ্যাপ্লিকেশন হিসাবে চলবে তবে এতে দৃশ্যমান কনসোলও থাকবে
মার্ক সিডাড

এটি ভুল, একটি নন কনসোল অ্যাপ্লিকেশন বিল্ড প্রক্রিয়া ডিফল্ট দ্বারা কোনও কনসোল সংযুক্ত করে না। কনসোল.উরাইটে যে কোনও কল করার আগে আপনি অলোকসনসোল () উইন 32 এপিআই ফাংশন কল করে ম্যানুয়ালি এটি করতে পারেন rite রাইটিং, কনসোল ক্লাসটি সেই কনসোল উইন্ডোটির সাথে কাজ করার জন্য আরম্ভ করা হবে।
জন লিডেগ্রেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.