ASP.NET+VB6のActiveX作成のメモ

(VB6側)
1.プロジェクトを「ActiveXコントロール」で作成する

Projectsel











2.スクリプトの実行や初期化を行ってもそのコントロールが安全であること示すマークを付ける

[参考URL]
Visual Basic コントロールで IObjectSafety を実装する方法
http://support.microsoft.com/kb/182598/ja

上記ページでタイプ ライブラリを生成するコマンドを以下のようにします

×MKTYPLIB objsafe.odl /tlb objsafe.tlb
○MKTYPLIB objsafe.odl /nocpp objsafe.tlb

3.外部プロパティ

[例] 「p」というPublicプロパティ
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    Label1.Caption = PropBag.ReadProperty("p")
End Sub

4.標準以外のコントロールをプロジェクトに含める場合は「lpk_tool.exe」を使用してランタイムライセンスを取り込む
(※Windowsコモンコントロールもlpk_toolを使用する必要がある)

5.ディストリビューションウィザードの「インターネットパッケージ」でcabファイルを作成する

Internetpack











6.デジタル署名

ベリサイン社と契約する



(ASP.NET側)
1.objectタグでparamを指定するときは、heightとwidthを指定しないと表示されない
(おそらくheightとwidthがともに0になっているため)

※デジタル署名がない場合のIEの設定

「インターネットオプション」→「セキュリティ」タブ
 →「レベルのカスタマイズ」
  →「スクリプトを実行しても安全だとマークされてないActiveX
    コントロールの初期化とスクリプトの実行」
    ・IE7では「ダイアログを表示する」
     IE6では「ダイアログを表示する」or「有効にする」

| | コメント (0) | トラックバック (2)

C# 子フォームから親フォームの関数をCall

子フォームから親フォームの関数を呼び出す例

Form1が親フォームでForm2が子フォームとする

・Form1に関数定義
public void Hoge()
{

}

※Publicで定義

・Form1からForm2を表示

Form2 frm2 = new Form2();
frm2.Owner = this;    // 親フォームを指定
frm2.ShowDialog();    // frm2.Show();でもOK

Ownerプロパティがポイント

・Form2からForm1の関数を呼び出す

((Form1) this.Owner).Hoge();


| | コメント (0) | トラックバック (0)

ウイルスセキュリティZERO おそろしい子・・・


インターネットにつながらないというトラブルがあったので客先に行ってみると・・・
IEはおろかExcel、Wordといったアプリケーションすべてが起動できない。

アプリケーションを起動しようとすると、下図のような
Fileassoc

関連付けが解除されてるというメッセージが出てしまう。

そういえば以前も別の客先で同じようなトラブルがあった。
その時はWindows再インストールして解決したので今回も面倒だが再インストールか・・・と思って調べていたら、今回も前回もともにウイルスセキュリティZEROがインストールされていたことに気づいた。

ソースネクストのページで調べてみると簡単にヒットした。
https://www.sourcenext.com/faq/action/faqdetails?kind=technical&no=VS-00687&sugtype=0&logid=70372619

どうやらFile Associationに対する変更が起きた際に、ウイルスセキュリティZEROが検知して確認ダイアログを表示する。その時にブロックするを選択するとこの現象になってしまうらしい。「ウイルスの可能性があります」と表示されたら「ブロック」を選んでも仕方ないなあとは思う。

「File Associationに対する変更」はWindowsUpdate等で起きるのかな。


↓こういう状態

         ,. -‐'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『ウイルスの可能性がありますと表示されたのでブロックをクリックしたら
        i|:!ヾ、_ノ/ u {:}//ヘ        すべてのアプリが起動できなくなった』
        |リ u' }  ,ノ _,!V,ハ |
       /´fト、_{ル{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが
     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった…
    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉
     |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \    催眠術だとか超スピードだとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ  もっと恐ろしいものの片鱗を味わったぜ…









| | コメント (0) | トラックバック (1)

ASP.NET モバイルページの注意点

1.Web.Configは「モバイルWeb構成ファイル」を使用する
2.Webフォームは「モバイルWebフォーム」を使用する

Mobileweb








3.Web.Configにクッキーを使用しない設定をする

  <system.web>
    <sessionState cookieless="true" />
  </system.web>

 この設定を行わないとボタンのイベントでポストバックした時に以下のようなエラーが出る
 「ページに必要なセッション状態は、現在使用できません。
  セッション状態の有効期限が切れているか、クライアントが有効なセッション Cookie を送信しなかったか、またはセッション状態の履歴サイズが小さすぎる可能性があります。
  履歴サイズを増やすか、またはセッションの有効期限を延長してください
  ・・・  」

4.リダイレクトは Response.Redirect ではなく、RedirectToMobilePageを使用する

5.hiddenフィールドの代わりにHiddenVariablesプロパティを使用する

[値の設定]
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Me.HiddenVariables("test1") = "あああ" 
    End If
End Sub

[値の取得]
Protected Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOk.Click
    Console.WriteLine(Me.HiddenVariables("test1").ToString())
End Sub

| | コメント (0) | トラックバック (0)

SQL-Server テーブル項目の追加

ALTER TABLEの構文をすぐに忘れてしまうのでメモ。

(例)
ALTER TABLE テーブル名 add
    項目名1  VARCHAR (3) DEFAULT '' NOT NULL,
    項目名2  VARCHAR (10) DEFAULT '' NOT NULL

項目は最後の列に追加される。

| | コメント (0) | トラックバック (0)

Lhacaで圧縮時にエラー

ファイルの圧縮解凍にLhacaが便利なので重宝しているのですが、
デスクトップ上のLhacaアイコンに100個ぐらいのファイルをドラッグ&ドロップして圧縮してみたら
「指定されたデバイス、パス、またはファイルにアクセスできません。アクセス許可がない可能性があります。」とエラーが表示された。
Lhacaerr


administrator権限のあるユーザーなのでアクセス許可がないはずがないのだが・・・

Googleで調べてみると、Lhaca公式ページのよくある質問の2番目に原因がはっきりと記載されていた。
以下転載
[A]: これはWindowsの制限です。ファイル名の長さにもよりますが、だいたいドロップしたファイル数が10から20を越えるとこのエラーが出やすくなります。デスクトップ上のアイコンをダブルクリックして、設定画面を出し、その設定画面上にファイルをドロップするか、ファイルを一つのフォルダーにいれてからフォルダーをドロップしてください。
転載終わり

どうやら、ファイル名の合計バイト数が2048バイトを超えると上記エラーがらしい。




| | コメント (0) | トラックバック (0)

ASP.NET Tableコントロール

今日はまったため、メモ。

Tableコントロールを使う場合、Page_LoadイベントではなくPage_Initイベントでテーブルを作成すること。

Page_Loadだとポストバック時にテーブルが消えてしまう。

3/21 追記
Page_Loadイベント内でIsPostBackで判断してもテーブルが消えてしまいます。

3/23 追記

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
            Dim row As New TableRow
            Dim cell1 As New TableCell
            cell1.Controls.Add(New LiteralControl("テスト!"))
            row.Cells.Add(cell1)
            Me.Table1.Rows.Add(row)
        End If

    End Sub

Page_Loadだとボタンクリックなどでポストバックが発生するとテーブルが消えます。


Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Dim row As New TableRow
        Dim cell1 As New TableCell
        cell1.Controls.Add(New LiteralControl("テスト!"))
        row.Cells.Add(cell1)
        Me.Table1.Rows.Add(row)
    End Sub

Page_Initなら消えません。

| | コメント (1) | トラックバック (0)

SQL-Server データベース名変更

データベース名の変更は2005だとSQL Server Management StudioだとGUIでできますが、
2000だとコマンドから入力して変更します。

(例)
EXEC sp_renamedb 'oldName', 'newName'

| | コメント (0) | トラックバック (0)

Javascript if文

ひさびさにJavascriptでコーディングしたのですが、

var n = 'aaa';
If (n == ''){
    alert('1');
}else{
    alert('2');
}

こんな簡単なコードで「オブジェクトが指定されていません」というエラーが出て昨日の半日間、原因がわからなかった。
今日になって冷静にみてみるとif文のIが大文字だったことに気が付いた・・・
最近VBばっかだから無意識でIを大文字で記述していたみたい。

単純なことほど気付きにくい。



| | コメント (0) | トラックバック (0)

VB.NET DLLでapp.config

自分メモ。
DLL単体でapp.configは使わないこと。

デバッグ時は「My.Settings.項目名」で設定値が取得できるので問題ないと思っていたが、DLL単独の設定値を保存できない。
(呼び出し側のアプリケーションのapp.configを参照することは可)

app.configはあくまでもアプリケーション(exe)用ということか。

| | コメント (0) | トラックバック (0)

«T-SQL ISNUMERIC関数は-を数値とみなす