C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■17422  プロセス上の EXCEL.EXEが残ってしまいます。
□投稿者/ neko -(2008/04/23(Wed) 21:15:27)

    分類:[.NET 全般] 

    VisualBasic.netで 
    [ 二つのエクセルファイルの情報を読み込んだ後に エクセルファイルを終了させる ] という処理を行いました。
    ですが、
    画面上ではエクセルが閉じるのを確認出来たのですが、プロセス上では EXCEL.EXEが残ってしまいます。
    (エクセルの、アプリケーション、ブック、シート の開放も行ったのですが、プロセス上で残っていました。)
    以下がそのソースなのですが、どうすれば、EXCEL.EXEを消すことができるのでしょうか。

    たいへん初歩的な質問かとは思いますが、よろしくお願いいたします。



    '------エクセルファイルを開く&表示-------

    'エクセルアプリケーションの定義
    Dim app1 = CreateObject("Excel.Application")
    Dim app2 = CreateObject("Excel.Application")

    app1.displayalerts = False
    app2.DisplayAlerts = False

    'ブックの定義
    Dim bk1 = app1.Workbooks
    Dim bk2 = app2.Workbooks

    Dim book1 = bk1.Open(myData.road_path1)
    Dim book2 = bk2.Open(myData.road_path2)

    'シートの定義
    Dim sheet1 = book1.Worksheets(1)
    Dim sheet2 = book2.Worksheets(1)

    '使用されている列数を取得する
    Dim Row1 = sheet1.UsedRange.Rows.Count() - 1
    Dim Row2 = sheet2.UsedRange.Rows.Count() - 1

    '使用されている行数を取得する
    Dim Col1 = sheet1.UsedRange.Columns.Count() - 1
    Dim Col2 = sheet2.UsedRange.Columns.Count() - 1

    '数値が大きい方を設定する
    myData.Max_Row = dif_suu(Row1, Row2)
    myData.Max_Col = dif_suu(Col1, Col2)

    'バッファ
    myData.File1_buf = New String(myData.Max_Row, myData.Max_Col) {}
    myData.File1_s_buf = New String(myData.Max_Row, myData.Max_Col) {}
    myData.File2_buf = New String(myData.Max_Row, myData.Max_Col) {}
    myData.File2_s_buf = New String(myData.Max_Row, myData.Max_Col) {}
    myData.File1_out_s_buf = New String(myData.Max_Row, myData.Max_Col) {}
    myData.File2_out_s_buf = New String(myData.Max_Row, myData.Max_Col) {}

    'ファイル1、2読込
    Try
    For i = 0 To myData.Max_Row
    For j = 0 To myData.Max_Col
    '表示用バッファ、出力用バッファ登録
    If sheet1.cells(i + 1, j + 1).value = Nothing Then
    myData.File1_buf(i, j) = ""
    myData.File1_s_buf(i, j) = ""
    myData.File1_out_s_buf(i, j) = ""
    Else
    myData.File1_buf(i, j) = sheet1.cells(i + 1, j + 1).value
    myData.File1_s_buf(i, j) = sheet1.cells(i + 1, j + 1).value
    myData.File1_out_s_buf(i, j) = sheet1.cells(i + 1, j + 1).value
    End If
    If sheet2.cells(i + 1, j + 1).value = Nothing Then
    myData.File2_buf(i, j) = ""
    myData.File2_s_buf(i, j) = ""
    myData.File2_out_s_buf(i, j) = ""
    Else
    myData.File2_buf(i, j) = sheet2.cells(i + 1, j + 1).value
    myData.File2_s_buf(i, j) = sheet2.cells(i + 1, j + 1).value
    myData.File2_out_s_buf(i, j) = sheet2.cells(i + 1, j + 1).value
    End If
    Next
    Next
    Catch ex As Exception
    MsgBox("ファイルリードエラー")
    logfile.log_out("ERR", "ファイルリードエラー", Err.Description, "")
    Return conf.D_NG
    End Try

    '終了処理
    app1.Workbooks.close()
    app1.quit()
    System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet1)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(book1)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(bk1)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(app1)

    app2.Workbooks.close()
    app2.quit()
    System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet2)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(book2)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(bk2)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(app2)
親記事 /過去ログ35より / 関連記事表示
削除チェック/

■46856  Re[15]: setup.exeとmsiの配布
□投稿者/ とっちゃん -(2010/02/12(Fri) 14:35:26)
>
    No46846 (aetos さん) に返信
    > ・オリジナルのmsiがないと修復できない
    > ・VSセットアップでインストールしたアプリは起動時に必ず修復チェックがかかる
    > という2点から導かれるのは…?
    >
    > VSセットアップでインストールしたアプリは、オリジナルのmsiがないと起動できない?
    > そんなばかな…と思うのですが。
    >
    > ちょっと前提条件が付いて、
    > VSセットアップでインストールしたアプリは、インストールしたファイルが削除されている等、修復が必要な状況下では、オリジナルのmsiがないと起動できない?
    > ならまだ納得ですが。

    ん?起動できないなんて書いてませんよ。<見直した。。。バグ見つけたけどw



    ちとここだけちゃんと解説。
    > ・オリジナルのmsiがないと修復できない
    正確には、オリジナルではなく、修復には「インストールに利用したmsiファイルおよびインストール対象のソースファイル(msi埋め込み、外付け cab、展開されたイメージのいずれか)が必要。」
    です。
    で、その存在位置はデフォルトではインストール時のパスとなるので、そこから移動した場合はそれを指定しなければならないとなります。
    当たり前ですが、移動とかそんなもの監視できないんで。


    > ・VSセットアップでインストールしたアプリは起動時に必ず修復チェックがかかる
    こちらも正確には、「VSセットアップなどmsiなインストーラが作成したショートカットを経由して起動しようとした場合は」です。
    起動時のチェックも何段階かあって、最初がターゲットファイル(ショートカットが差すパスに当たるもの)があるかどうか
    あったら起動しておいてその間にほかの連携しているコンポーネント類をチェックという形になります。
    このへんは専門的な話なので、興味があったら http://www.freeml.com/msi/ で改めて質問してください。



    さてと。。。バグを修正。。。
    No46764
    >VSセットアップで作るとスタートメニュークリックしたら必ずチェックが入るので
    なんてとんでもないこと書いてますが
    ここは
    VSセットアップで作るとスタートメニューからたどれるショートカットをクリックしたら...
    です

    いくらなんでもスタートメニューのクリックで自動チェックは入りません。。。
    そんなことしたらスタートメニューを開いたら重くなってまともに使えなくなってしまう...orz
記事No.46640 のレス /過去ログ79より / 関連記事表示
削除チェック/

■51957  Re[10]: windowsのしくみ
□投稿者/ 中博俊 -(2010/07/27(Tue) 10:48:12)
    まぁあおり文句は横に置いといたらいいんじゃないですかね
記事No.51906 のレス /過去ログ87より / 関連記事表示
削除チェック/

■70397  Re[2]: C#でXMLを書き換える
□投稿者/ Hongliang -(2014/03/20(Thu) 14:06:48)
    2014/03/20(Thu) 14:08:58 編集(投稿者)

    > var q = from atr in doc.Root.Elements("meta-data").Attributes(nAB + "name")
    > where atr.Value == "unityplayer.ForwardNativeEventsToDalvik"
    > select atr.Parent.Attribute("android:value");
    > しかし、itemの値がnullになり失敗しました

    Elements拡張メソッドは子要素だけを列挙するメソッドです。
    子孫要素を列挙したいならDescendents拡張メソッドを使用します。
    また、valueの指定が間違っています。nAB + "value"とする必要があります。

    > var atr = doc.SelectSingleNode("/manifest/application/activity/meta-data[@android:name='unityplayer.ForwardNativeEventsToDalvik']/@value",xmlnsManager);
    > こちらではatrの値がnullとなり失敗しました。

    value属性もandroid接頭辞の名前空間下ですが、XPathでは名前空間接頭辞が指定されていません。
記事No.70377 のレス /過去ログ120より / 関連記事表示
削除チェック/

■95292  Re[21]: コマンドプロンプトで逐次的にデータを取得する方法
□投稿者/ aaap -(2020/07/11(Sat) 16:03:20)

    ありがとうございます。

    大体分かってきました。

    コマンドラインから実行するのではなく、直接ffmpegを実行するとうまく停止させることができました。

    > やっぱりソースいる?

    もし差し支えなければアップしていただけますでしょうか?


    あと、一つ気になっているのですが、
    コマンドラインだと、
    最初にエンコード条件が表示された後に、

    frame= 7653 fps=1271 q=18.0 size= 116480kB time=00:04:15.58 bitrate=3733.5kbits/s speed=42.5x

    というようなコードが逐次的に表示されますが、
    エンコード条件だけは消えずに残るのに対し、
    この逐次的に表示されるコードだけは累積せずに、
    過去のコードが消えては新しいコードに書き換わってというのを繰り返しています。

    これをプログラム上でも行いたいのですが、
    どのようにすれば良いですか?

    単に出力コードの先端が、frame= であるかどうか確認するしかないのでしょうか?

    コマンドライン上でそのようなことをしているとは思えないので、
    何か方法があるのでしょうか?

記事No.95265 のレス /過去ログ165より / 関連記事表示
削除チェック/

■95293  Re[22]: コマンドプロンプトで逐次的にデータを取得する方法
□投稿者/ くまくま -(2020/07/11(Sat) 20:43:06)
    2020/07/11(Sat) 20:44:42 編集(投稿者)

    No95292 (aaap さん) に返信
    > もし差し支えなければアップしていただけますでしょうか?
    少々おまちください。コメント等整理します。

    >コマンドラインから実行するのではなく、直接ffmpegを実行するとうまく停止させることができました。
    ソースコメントには記載しておきますがcmd.exeでコマンド実行終了しても
    cmd.exeは終了せずに次のコマンドを受け付ける為に待機状態になります。
    (コマンドプロンプトで複数のコマンドが実行できる事で想像できるかと思います)
    その為今回必要ありませんが終了判定で「一定時間、標準・エラー出力がない場合」の処理が含まれますので
    ご了承下さい。

    > 単に出力コードの先端が、frame= であるかどうか確認するしかないのでしょうか?
    はい。ffmpegがエラー出力を消して再表示を行っていますが
    「消す」イベントを取得することがvb.net上でできません。
    (取得できるのはライン追加のみ)
    形式が決まっているので"frame="で判定するしかないです。
    (ほかにfpsが1000単位でメッセージが表示されたような...)
記事No.95265 のレス /過去ログ165より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -