cinime.exeって?

解決


GSX  2004-02-29 02:46:36  No: 112110  IP: [192.*.*.*]

.NETで作成したアプリケーションを実行すると
タスクマネージャーにconime.exeってのが発生しますTT

調べてみるとコンソールIMEとかで・・・
作成したアプリはGUIでコンソールなんて表示しませんし
どうして発生するのでしょう?
(前に製作したバージョンは作成されないのですが。
関係ありそうな事と言えばコントロール類のフォントを変えた事位でしょうか?

お願いします。

編集 削除
GSX  2004-03-04 12:24:01  No: 112111  IP: [192.*.*.*]

原因が分かったのですが、対処方法はありませんでしょうか?
Formにボタン・ラベル、それぞれ2個づつ置き以下のコードを実行するとConimeが発生しますTT;

    Private Sub Read_Click... Handles Read.Click
        Dim Sample As New clsSample
        Dim fs As New IO.FileStream("C:\SampleXmlFile.xml", IO.FileMode.Open)
        Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))

        Sample = Serializer.Deserialize(fs)
        fs.Close()
        Me.Label1.Text = Sample.Sample1
        Me.Label2.Text = Sample.Sample2
    End Sub
    Private Sub Write_Click... Handles Write.Click
        Dim Sample As New clsSample
        Dim fs As New IO.FileStream("C:\SampleXmlFile.xml", IO.FileMode.Create)
        Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))

        Sample.Sample1 = Now
        Sample.Sample2 = "本日は晴天なり"
        Serializer.Serialize(fs, Sample)
        fs.Close()
    End Sub
End Class

Public Class clsSample
    Private dteSample1 As Date
    Private strSample2 As String
    Public Property Sample1() As Date
        Get
            Return dteSample1
        End Get
        Set(ByVal Value As Date)
            dteSample1 = Value
        End Set
    End Property
    Public Property Sample2() As String
        Get
            Return strSample2
        End Get
        Set(ByVal Value As String)
            strSample2 = Value
        End Set
    End Property
End Class

編集 削除
特攻隊長まるるう  2004-03-04 16:31:25  No: 112112  IP: [192.*.*.*]

原因…もっと限定しないと…上のコードで特定されてる?(汗)。

…ちょっとやってみたけど Xml.Serialization.XmlSerializer
使った時点で起動するみたいですね>cinime.exe
ファイルを既に作成したことを前提に、

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Dim Sample As New clsSample()
        'Dim fs As New IO.FileStream("C:\Data\SampleXmlFile.xml", IO.FileMode.Open)
        Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))

        'Sample = Serializer.Deserialize(fs)
        'fs.Close()
        'Me.Label1.Text = Sample.Sample1
        'Me.Label2.Text = Sample.Sample2
    End Sub

で起動しますよ?。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Dim Sample As New clsSample()
        Dim ArrayX() As Byte
        Dim i As Integer
        Dim fs As New IO.FileStream("C:\Data\SampleXmlFile.xml", IO.FileMode.Open)
        'Dim Serializer As New Xml.Serialization.XmlSerializer(GetType(clsSample))
        With fs
            ReDim ArrayX(.Length - 1)
            .Read(ArrayX, 0, .Length - 1)
        End With

        With ArrayX
            For i = 0 To UBound(ArrayX)
                Debug.Write(ArrayX(i))
            Next
        End With
        'Sample = Serializer.Deserialize(fs)
        fs.Close()
        'Me.Label1.Text = Sample.Sample1
        'Me.Label2.Text = Sample.Sample2
    End Sub

では起動しませんでした。
そもそもなんでそんなに conime.exe が発生するとダメなんですか?

編集 削除
特攻隊長まるるう  2004-03-04 16:35:37  No: 112113  IP: [192.*.*.*]

あ、ごめんファイルのパスが…
C:\Data\SampleXmlFile.xml -> C:\SampleXmlFile.xml
…で

編集 削除
GSX  2004-03-04 19:47:55  No: 112114  IP: [192.*.*.*]

特攻隊長まるるうさん返信ありがとうございます^^

>>原因…もっと限定しないと…上のコードで特定されてる?(汗)。
申し訳ありませんm(_ _)m もっと絞って書けばよかったですね
特攻隊長まるるうさんの仰る通りシリアライザーのオブジェクトを作った際に
"conime.exe"が発生します。

>>conime.exe が発生するとダメなんですか?
conime.exeが特別駄目と言う訳ではないのですが、「何の為に発生??」
と言う疑問が残りますし、プログラムを作ってる以上把握しておきたいのです。

あと意味が少し汲み取れなかったのですが*.xmlをバイナリで読み込むと・・・?

編集 削除
特攻隊長まるるう  2004-03-05 10:46:56  No: 112115  IP: [192.*.*.*]

>プログラムを作ってる以上把握しておきたいのです。
…すばらしい…動けばいいと思ってるエセVBぷろぐらまから
脱却しきれてないボクとは大違いデス。
少し違いますが
http://support.microsoft.com/default.aspx?scid=kb;ja;814379
[原因]と[回避策]に情報が…

>あと意味が少し汲み取れなかったのですが*.xmlをバイナリで読み込むと・・・?
シリアライザー使わないでデータを読み取れば良いんでしょ?。
FileStream を使ってたからそのまま読み取ってみただけです。
で、conime.exe が起動しなかったから報告したまでです。可能性が
見えてきたから、あとは conime.exe を起動しないで読み取れるものを
探せばいいでしょ?見つからなければ FileStream でどうにかすればいい
わけです。

FileSystemObject を使った方法
System.Xml.XmlDocument を使った方法

で conime.exe を起動しないで読み取れることが確認できました。
ご検討ください。

編集 削除
特攻隊長まるるう  2004-03-05 15:13:02  No: 112116  IP: [192.*.*.*]

よくよく考えると… Class の形で保存しててそれを Class の形に復元する処理が
効率的にできないと意味が無い気がしてきた…。

とりあえず、Node を順に辿って同じ名前が見つかれば値を取る…
といった処理では conime.exe は起動しませんでしたが、これでは
いちいち Class の形が変わると処理も変更しないと…

ボクが提供できる情報はこのくらいです〜。

編集 削除
GSX  2004-03-05 18:29:00  No: 112117  IP: [192.*.*.*]

特攻隊長まるるうさん丁寧にありがとうございます。
>>FileSystemObject を使った方法
>>System.Xml.XmlDocument を使った方法
ということで、MSDNライブラリーを詳しく読んでみるとバイナリシリアル化と言う項を見つけ、
なんとかconimeちゃんを追い出す事に成功しました。だた解決では無いので未だに気になりますけど^^;

Imports System.Runtime.Serialization.Formatters.Binary
Public Class Form1
    Inherits System.Windows.Forms.Form
     Private Sub btnWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWrite.Click
        Dim Sample2 As New clsSample2
        Sample2.Sample1 = Now
        Sample2.Sample2 = "本日は晴天なり"
        Sample2.Serialize(Sample2, "C:\BinaryXML.dat")
    End Sub

    Private Sub btnRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRead.Click
        Dim Sample2 As New clsSample2
        Sample2.Deserialize(Sample2, "C:\BinaryXML.dat")
        Me.Label1.Text = Sample2.Sample1
        Me.Label2.Text = Sample2.Sample2
    End Sub

<Serializable()> Public Class clsSample2
    Private dteSample1 As Date
    Private strSample2 As String

    Public Sub Serialize(ByRef Sample2 As clsSample2, ByVal SavePath As String)
        Dim fs As New IO.FileStream(SavePath, IO.FileMode.Create)
        Dim formatter As New BinaryFormatter
        formatter.Serialize(fs, Sample2)
        fs.Close()
    End Sub
    Public Sub Deserialize(ByRef Sample2 As clsSample2, ByVal LoadPath As String)
        Dim fs As New IO.FileStream(LoadPath, IO.FileMode.Open)
        Dim formatter As New BinaryFormatter
        Sample2 = formatter.Deserialize(fs)
        fs.Close()
    End Sub
    Public Property Sample1() As Date
        Get
            Return dteSample1
        End Get
        Set(ByVal Value As Date)
            dteSample1 = Value
        End Set
    End Property
    Public Property Sample2() As String
        Get
            Return strSample2
        End Get
        Set(ByVal Value As String)
            strSample2 = Value
        End Set
    End Property
End Class

改めて特攻隊長まるるうさん貴重な時間を割いて頂いて有難うございました。

編集 削除