日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

EOleException (メッセージ 'WorksheetFunction クラスの Match メソッドが失敗しました。'

およよ~

エクセルに該当値がないとエラーが生成されました

例外をスルーして対処。

エラー値を返してくれたらいいのに。

try
// 失敗すると例外が発生するみたい
myResult := TargetSheet.Application.WorksheetFunction.Match(TargetID , myRange , 0);
except
end;
2013.09.21

パナナビ ポイント登録データフォーマット( .PTF 編 ) メモ


執筆:2011.12.18
編集:2011.12.19
編集:2011.12.20
編集:2011.12.21
編集:2011.12.22
編集:2011.12.28

マイ メモ

※データを操作するに はバ イナリ操作に関する知識が必要です。
※データを参考にする 際 は、自己責任で参考になされてください。
※データの整合性はご自分で十分検 証なされてください。
設定を間違ったり、データを編集したりするとナビが故 障・誤動作する恐れがあります。

ファイル拡張子: PTF
ファイル形式: バイナリデータ

ポイン ト ファイル ptf
ヘッダ 12バイト データ1 データ2 .... データN

» 続きを読む

2011.12.18

エラー: "B005SR0OMY" is not a valid value for ItemId.

はぁ・・・

最近まで正常に表示されていたので
全くわかりませんでしたが、表示されなくなっていたので

あわわ・・・って急いで調べました。

1時間検索の末、やっと
エンドポイントが原因ということを書いているページがあったので

AWSECommerceServicePortJPというのが wsdlに記述されているので
そこの値を指定すると解決しました。

$AWS_wsdl_end_point = 'https://webservices.amazon.co.jp/onca/soap?Service=AWSECommerceService';
$client->__setLocation($AWS_wsdl_end_point);


wsdlは日本のurlから取得しているのになんでcomの値が入っているの?
って感じ。
まったく もう!!
2011.11.09

flashのハンドルを取得してみよう。

執筆:2011.10.19
編集:2011.10.19

TWebBrowser.HWNDを取得する方法 (メモ: その2)
flashのハンドルを取得してみよう。

【方法1】 : Tag名からリストアップする
  var
    H : THandle;
    i : Integer;
    v_Doccument, v_elems , v_attr : Variant;
    s : string;
begin
  v_Doccument := WebBrowser1.Document;

  if VarIsClear(v_Doccument)
    or
    ('Internet Explorer_Server'
      <> GetClassNameText(GetWindowHandleFromIDispatch(v_Doccument)))
     then
   begin
     Exit;
   end;

  v_elems   := v_Doccument.getElementsByTagName('OBJECT');
  if Not VarIsClear(v_elems)
     and (v_elems.length > 0) then
   begin
     s := 'count: '+IntToStr(v_elems.length) + sLineBreak;
     for i := 0 to v_elems.length -1 do
      begin
        v_attr := v_elems.Item(i).getAttribute('CLASSID');
        if Not VarIsClear(v_attr)
           and (VarToStr(v_attr)
              = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000')
            then
         begin
           s := s + v_attr + sLineBreak;
           H := GetWindowHandleFromIDispatch(v_elems.Item(i));
           s := s + ' HWND: ' + IntToStr(H) + sLineBreak + sLineBreak;
         end;
      end;
     ShowMessage(s);
   end;
end;

【方法2】 : 子Windowから探す
flashオブジェクトが htmlの
最上位に貼り付けられている場合の例です。
※iframeなどに入っている場合は、下位階層まで追いかける必要があります。

※単一のflashが htmlに張り付いている場合。
function SearchFlashHandle(p_hwnd : HWND) : HWND;
    var
      c_hwnd : HWND;
begin
  Result := 0;
  c_hwnd := GetWindow(p_hwnd, GW_CHILD );
    while (c_hwnd > 0) do
      begin
        // ClassName[MacromediaFlashPlayerActiveX]
          if (Pos('MacromediaFlashPlayerActiveX',
                   GetClassNameText(c_hwnd)) = 1) then
           begin
             Result := c_hwnd;
             break;
           end;
          c_hwnd := GetWindow(c_hwnd, GW_HWNDNEXT );
     end;
end;


使用例 : SetFocusする。
h := GetWindowHandleFromIDispatch(WebBrowser1.Document);
flash_handle := SearchFlashHandle(h);
if (flash_handle > 0) then
  Windows.SetFocus(flash_handle);

GetWindowHandleFromIDispatch関数については、
TWebBrowser.HWNDを取得する方法 (メモ: その1)
に書いてあります。


TWebBrowserで、どうしても入力フォーカスを当てたい際に役に立ちます。
flash以外の他のオブジェクトも同様に応用することができます。



さようなら Delphi
 レッツゴー  ドットネット
 それいけ ドットネット
  それいけ C#



2011.10.20

C#で WebBrowserを使ってみよう(その1)

執筆:2011.10.15
編集:2011.10.16


Delphiで作ると実行ファイルが大きくなるし、Tabで WebBrowserコ ントロール内に移動できないので

さぁ C#だー
 はっはっはっ!
  って 試験動作させると
    瞬時に ずっこけました。

OnNewWindowで、Dispatchが設定したかったのです。

他にもいっぱいあるのですけど
NewWindowでDelphi相当の機能が実装されていないのです。
開くURLも取得できないし、Dispatchも設定できないなんて、酷い(ひどい)話です。

.Netには、なんの嫌がらせか知りませんが、本来つけておくべきイベントがたくさんないのです。

なんでもかんでも
新しいWindowで開くで、IEに送るのでは、WebBrowserを内蔵する意味がほとんどないでしょ。
(※IEに送るとセッションCookie?が引き継がれないから問題なんです。)

ということで、
.NetのWebBrowserを拡張して本来あるべきイベントを追加して対処しました。


 private void exWebBrowser1_NewWindow3(
    object sender,
    WebBrowserExtendedNewWindow3EventArgs e)
 {
     // メモ
     //  (1)e.pDisp に設定しない。新しいIEとして開く。
     //  (2)e.pDisp を設定する。指定したWebBrowserで開く。
     //     ※同じWebBrowserでは、e.pDispは、動作しない。
     //  (3)同じWebBrowserで開く。キャンセルNavigateを呼ぶ。
     //     ※POSTなどが失われるので注意。
     // MessageBox.Show((string) e.URL);
     // open as self WebBrowser
     //  e.Cancel = true; exWebBrowser1.Navigate((string) e.URL);
     // open as new WebBrowser
     //  e.pDisp = exWebBrowser2.ActiveXInstance;
 }

// using System.Runtime.InteropServices;
    public event EventHandler<WebBrowserExtendedNewWindow3EventArgs> NewWindow3;

    protected void OnNewWindow3( ... 省略
    ..... 省略

    [ComImport, Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"),
    InterfaceType(ComInterfaceType.InterfaceIsIDispatch),
    TypeLibType(TypeLibTypeFlags.FHidden)]
    public interface DWebBrowserEvents2
    {
       [DispId(273)]
       void NewWindow3(
           [In, Out, MarshalAs(UnmanagedType.IDispatch)] ref object pDisp,
           [In, Out] ref bool cancel,
           [In] ref object flags,
           [In] ref object URLContext,
           [In] ref object URL);
    }


読者に作る機会を与え、動作原理を理解させるために
あえて、完全なコードは開示していません。
不足分は、参考サイトを見ながら完成させましょう。

参考にした フォーラム が型とか ウソ書いていたので
少し手間だったヨ。

◎よくできました
とりあえず、目的の動作をするようにしたのでので「よし」としよう。


【参考サイト】
  • webBrowserで別のウインドウで開くときの開く先のURLの取得法
    とその中のリンク記事
    (VSUG フォーラム → .NET 開発  → Visual C#  → webBrowserで別のウインドウで開くときの開く先のURLの取得法)
  • MSDN Library for Visual Studio 2008
    ・CreateSink メソッド (使用例)
    ・他

2011.10.17



PR

[PR]