Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

Windows

ActiveX.exe , ActiveX.dll の登録

何年かに 1 度ある問合せ.普段あまりやってないとすぐ忘れてしまう.

dll や ocx の登録は,RegSvr32 .
 管理者として起動したコマンドプロンプトで,以下の様に入力して登録できる.
  RegSvr32.exe ActiveX.dll
 RegSvr32 で ocx などの登録
 OCX x64
exe は,管理者として起動したコマンドプロンプトで実行.
  ActiveX.exe
 IIS 環境の再設定


  にほんブログ村 IT技術ブログへ


Funmoods の削除

Chrome の「拡張機能」の所を見ていたら,見慣れない「Funmoods」というのがあった.

特に変な現象は気がつかなかったが,ウィルスに近い存在らしいので以下を参考にさせてもらって削除することに.
Funmoods Toolbar削除アンインストール方法&Funmoods Search無効化方法


  にほんブログ村 IT技術ブログへ


PolyPolygon

あまり利用していないが,PolyPolygon を使ったコード.

	CArray<P2A,P2A>	p2aAry ;
	p2aAry.Copy(P2A_Ary) ;
	::P2AA_InvY(&p2aAry) ;
	CRect		rect ;
	m_Image.GetClientRect(rect) ;
	::P2AA_Scale(&p2aAry,rect) ;
	//	...
	CArray<CPoint,CPoint>	points ;
	CUIntArray		polyCounts ;
	int		nCount = ::P2AA_ToPointAry(p2aAry,&points,&polyCounts) ;
	CClientDC	dc(&m_Image) ;
	dc.PolyPolygon	(points.GetData(),  (int*)polyCounts.GetData(),nCount) ;
	//	...

P2A は 2 次元座標の配列で,一つの多角形を保持.
CArray<P2A,P2A> とすることにより,複数の多角形を持っている.
前半部分で表示用の座標に変換している.
次の様なデータの場合,2 次元座標の配列 points と,polyCounts が 9 と 8 ,nCount が 2 .

	
L
-1.390625,    6.5,        0,1,
 1.390625,    6.5,        0,1,
 5.640625,   -6.5,        0,1,
 3.734375,   -6.5,        0,1,
 2.21875,    -2.5,        0,1,
-2.21875,    -2.5,        0,1,
-3.75,       -6.5,        0,1,
-5.640625,   -6.5,        0,1,
-1.390625,    6.5,        0,1,
L
 1.59375,    -0.5,        0,1,
 0.734375,    2.203125,   0,1,
 0.28515625,  3.60546875, 0,1,
 0,           4.5,        0,1,
-0.2421875,   3.72265625, 0,1,
-0.59375,     2.640625,   0,1,
-1.59375,    -0.5,        0,1,
 1.59375,    -0.5,        0,1,

1つの多角形は閉じた状態で指定している.
ドキュメントには,次の様に書かれている.
「各多角形の最初の頂点と最後の頂点は、自動的に結ばれます。各頂点を 1 回だけ指定するべきです。」


  にほんブログ村 IT技術ブログへ


球が作成できない

背景画像のアップロードで,球を生成してそれに貼り付ける.
コード自体はそれほど難しくないので,1 日位でできると思ってた.
Windows のコンソール AP で,次の様なコードを書いてテスト.
MakeBG.cpp


#include "MessBar.hxx"
#include "i_Trace.hxx"
#include "GonsPrm2.hxx"
#include "Htm_thrj.hxx"

//*******************************************************************************
// make bg files imo and html
// Create : 2018/04/19
//*******************************************************************************
inline bool MakeBG (c_tstring& dibPath)
{
    tstring ext = ::Path_GetExtLow(dibPath) ;
    if      (ext == _T("bmp")) { ;              }
    else if (ext == _T("jpg")) { ;              }
    else if (ext == _T("png")) { ;              }
    else                       { return false ; }
    {
        tstring imoPath = ::Path_ChangeExt(dibPath,_T(".imo")) ;
        tstring htmName = ::Path_ChangeExt(dibPath,_T(".html")) ;
        tstring dmpName = ::Path_ChangeExt(dibPath,_T(".ipl")) ;
        {
            long div = 90/5 ;
            v_Vd3A pntsAry = ::BuildSphere(div) ;
            {
                std::tout << pntsAry.size() << std::endl ;
                if (pntsAry.size() > 0) {
                    Vd3A pnts = pntsAry[0] ;
                    std::tout << pnts.size() << std::endl ;
                    }
                tstring str = ::v_V3_To_tstring(pntsAry,_T(",")) ;
                {
                    std::tout << str << std::endl ;
                    }
                ::SaveText(dmpName.c_str(),str) ;
                }
            v_Vd2A  txuvAry = ::SetTextureUV(pntsAry) ;
                    pntsAry = ::V3_Scale (pntsAry,Vd3(20.)) ;
            Gons1   gons1 = ::Gons_BuildFace(pntsAry,txuvAry,dibPath.c_str()) ;
            GonsA   ga ;
                    ga.push_back(gons1) ;
            Ed3     es = ::GonsA_GetExtent(ga) ;
            {
                std::tout << imoPath << _T("\t") ;
                std::tout << ::V3_To_tstring(es.Volume()) << std::endl ;
                }
            if (es.Volume() != Vd3(0)) {
                es = Ed3(es.L*0.01,es.G*0.01) ;
                ::GonsA_ToOBJ(ga,imoPath.c_str()) ;
                ::HT_Make_three_js_html(imoPath.c_str(),es) ;
                }
            }
        }
    return true ;
    }

//*******************************************************************************
// Make BG
// Create : 2018/04/19
//*******************************************************************************
int _tmain (int argc,TCHAR* argv[])
{
    _tsetlocale(LC_ALL,_T("")) ;
    {
        double s = sin(rad(30)) ;
        double c = cos(rad(30)) ;
        std::tout << ::To_tstring(rad(30)) << _T("\t") << ::To_tstring(s) << _T("\t") << ::To_tstring(c) << std::endl ;
        }
    if (argc > 1) {
        v_tstring argAry ;
        for (int index=1 ; index<argc ; index++) {
            tstring av = argv[index] ;
            ::MakeBG(av) ;
            }
        }
    else {
        tstring buf ;
        buf.resize(1000) ;
        {
            while (std::terr << _T("dib ? =") , std::tin.getline(&buf[0],buf.size()))
            {
                tstring str = buf.c_str() ;
                if      (str == _T("q"))   { break ; }
                else if (str == _T("Q"))   { break ; }
                str = ::QuotM_Del_All(str) ;
                if (str.empty())           { continue ; }
                if (::File_IsNothing(str)) { continue ; }
                tstring dib_file = str ;
                ::MakeBG(dib_file) ;
                }
            }
        }
    return 0 ;
    }

#include "MessBar.cxx"

今度は,DS116 でビルドして実行すると,

Iwao@DS116:/var/.../Test/up_bg/data$ ./a.out
0.523599        98314745853377985068733249901357667205561433229409406145971019710277043155206326909160297391588106447153156445277590513896008090831662627743743127151181611161993303763348552511914898438567008016612049817143085994563143448055356356529593034366351316506187159487365573007925410016860727208738652774465536.000000  98321247861193438769252981549279948821735544950351014769381393881588573259178110828643912278175146924986161470094082713103803921735703931192359519739047155548857037547932930737608178537416409042994283830606984599100883034181136178714087912736395732787698542049681305006129736011480288874859116047106048.000000
dib ? =

本当は,

C:\Users\Iwao\...\i_Tools.tmp>\\DevXP\C_Drive\Temp\DS11x\MakeBG\Release.060\MakeBG.exe
0.523599        0.500000        0.866025
dib ? =

cmath が使えない様で,検索すると「-lm でコンパイルが通る」と言うのは見つかる.
が,コンパイルの問題ではなく,実行でうまくない.


当然ではあるが,DS115j でも同様.
試しに,opkg update と opkg install gcc .
root@DS116:/var/…/Iwao# opkg update
Downloading http://pkg.entware.net/binaries/armv7/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/packages
root@DS116:/var/…/Iwao# opkg install gcc
Upgrading gcc on root from 6.3.0-1 to 6.3.0-1a…
Downloading http://pkg.entware.net/binaries/armv7/gcc_6.3.0-1a_armv7soft.ipk
Configuring gcc.
root@DS116:/var/…/Iwao#
もう一度,ビルドして実行すると,
Iwao@DS116:/var/…/Test/up_bg/data$ g++ MakeBG.cpp
Iwao@DS116:/var/…/Test/up_bg/data$ ./a.out
0.523599 0.500000 0.866025
dib ? =
予想以上に時間がかかってしまったが,何とか…
daikoku_edit.html


  にほんブログ村 IT技術ブログへ


アップロード先のアクセス権

次の様な htm と php で,画像をアップできる所を用意.


up.htm

<!DOCTYPE html>
<html lang="ja" >
  <head >
    <meta charset="UTF-8" />
    </head>
  <body >
    <form action="http:./up.php" method="post" enctype="multipart/form-data">
      <input type="file" name ="fname" accept=".jpg,.png">
      <input type="submit" value="upload">
      </form>
    </body>
  </html>

up.php

<?php
  $tempfile = $_FILES['fname']['tmp_name'];
  $fileName = './data/' . $_FILES['fname']['name'] ;
  $up_status = false ;
  if (is_uploaded_file($tempfile)) {
    $up_status = move_uploaded_file($tempfile , $fileName ) ;
    }
  $frm_src = './' ;
  if ($up_status) {
    $frm_src = $fileName ;
    }
  header("Location: {$frm_src}") ;
  ?>

これらのファイルとアップ先のフォルダを用意しただけでは,アクセス権がないのでアップロードできない.
以前は,DSM に入り「File Station」で「権限」を設定していた.
今まで面倒と思いつつ,試しに Windows 環境からアクセス権を「読み取り(RX)(RX)」から「変更」に.

File Station で設定したものと少し異なるが,それなりに動作してそう.


  にほんブログ村 IT技術ブログへ


WinFile.exe

Google ニュースで,次の内容を見つけた.
Windows 3.x時代の“ファイルマネージャ”がオープンソース化で復活~Windows 10でも利用可能に
WinXP までは,1999/10/14 8:00:00 の WinFile.exe を使用している.
Win7 でも動作させるための方法があって,試したこともあるがうまく動作しなかった.
Windows File Manager revived


次の所から落として動作を確認してみた.
WinFile v10.0 – Sharing 10 years of improvements
Winfile_orig_plus.zip の方がオリジナルに近いのでやってみたが,設定情報が保存されないみたい.
Winfile_v10.0.zip は,「Properties」などが新しくなってしまっている.


  にほんブログ村 IT技術ブログへ


MAPI の MapiFileDesc の配列

MFC を使用している方法では,

    LateDelete	ld ;    //  MultiByte の必要があるようなので,UNICODE の時のバッファをここに登録
    //	添付ファイルの準備
    CArray<MapiFileDesc,MapiFileDesc>	fileDescA ;
    int	fileCount = 0 ;
    int	index = 0 ;
    for (index=0 ; index<PathNames.GetSize() ; index++) {
        CString	    pathName = PathNames[index] ;
        if (::FileIsNothing  (pathName))	{	continue ;	}
        if (::FileIsDirectory(pathName))	{	continue ;	}
        MapiFileDesc	fileDesc ;
        memset(&fileDesc,0,sizeof(MapiFileDesc)) ;
        fileDesc.nPosition		= (ULONG)-1 ;
    #ifdef	_UNICODE
        fileDesc.lpszPathName	= SendMail__ChangeMultiByte(PathNames[index],&ld) ;
        fileDesc.lpszFileName	= SendMail__ChangeMultiByte(FileNames[index],&ld) ;
    #else
        fileDesc.lpszPathName	= LPSTR(LPCTSTR(PathNames[index])) ;
        fileDesc.lpszFileName	= LPSTR(LPCTSTR(FileNames[index])) ;
    #endif
        fileDescA.Add(fileDesc) ;
        fileCount++ ;
        }

MFC を使用しないコードは,

    std::vector<MapiFileDesc>	fileDescA ;
    std::vector<std::string>	pathNameA ;
    std::vector<std::string>	fileNameA ;
    int	index = 0 ;
    {
        for (index=0 ; index<PathNames.GetSize() ; index++) {
            {
                tstring	pathName = PathNames[index] ;
                if (::File_IsNothing  (pathName))	{	continue ;	}
                if (::File_IsDirectory(pathName))	{	continue ;	}
                }
            std::string	pathName= ::To__string(PathNames[index]) ;
            std::string	fileName= ::To__string(FileNames[index]) ;
            pathNameA.push_back(pathName) ;
            fileNameA.push_back(fileName) ;
            }
        {
            for (size_t index=0 ; index<pathNameA.size()&&index<fileNameA.size() ; index++) {
                MapiFileDesc	fileDesc ;
                memset(&fileDesc,0,sizeof(MapiFileDesc)) ;
                fileDesc.nPosition	= (ULONG)-1 ;
                fileDesc.lpszPathName	= &(pathNameA[index])[0] ;
                fileDesc.lpszFileName	= &(fileNameA[index])[0] ;
                fileDescA.push_back(fileDesc) ;
                }
            }
        }

詳しくは見てないが,幾つかの方法が書かれていたので
Sending Email with MAPI


MapiRecipDesc.lpszAddress の “smtp:”
以前コードを直したのが 2002/4 であまり情報がなかった様に思う.
個人的に書いた内容が「Outlook で配信不能になる
参考になりそうな所
Email mit Dateien perWinAPI versenden??
MAPISendMail
MSDN MapiRecipDesc structure
Sending email using MAPI causes error on ‘ResolveName’ function in Window7


S_Mail.hxx


  にほんブログ村 IT技術ブログへ


T5400 Windows アップデートで…

T5400 が Windows アップデートで,起動しなくなってしまった.
再起動後,




リセットがかかる.


セーフモードで起動すると自動的に,

その後勝手に再起動して,

この状態で今 2 時間近く.


その後しばらくして,やっと起動できた.


  にほんブログ村 IT技術ブログへ


Win10 1709 その後

内臓のディスク容量が少ないので,「ジャンクション」を利用して D にしていた.

C:\Users\Public\Documents>dir /a
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 9899-964A です
 C:\Users\Public\Documents のディレクトリ
2018/01/21  13:56    <DIR>          .
2018/01/21  13:56    <DIR>          ..
2016/02/11  01:29    <JUNCTION>     Asus [C:\Public\Document\Asus]
2017/09/29  20:52               278 desktop.ini
2016/02/11  01:49    <JUNCTION>     Dropbox [C:\Public\Document\Dropbox]
2016/12/22  11:01    <DIR>          images
2016/02/11  01:27    <JUNCTION>     M... [C:\Public\Document\M...]
2016/02/11  01:16    <JUNCTION>     M... [C:\Public\Document\M...]
2015/07/10  18:55    <JUNCTION>     My Music [C:\Users\Public\Music]
2015/07/10  18:55    <JUNCTION>     My Pictures [C:\Users\Public\Pictures]
2015/07/10  18:55    <JUNCTION>     My Videos [C:\Users\Public\Videos]
2018/01/21  14:20    <DIR>          Temp
2016/02/11  01:26    <JUNCTION>     Tools [C:\Public\Document\Tools]
2016/02/20  16:28                 0 VC_Path.BAK
2016/02/20  16:31             2,563 VC_Path.txt
2016/12/21  23:45               168 web.config
2017/02/17  22:12    <DIR>          w_Conf
               4 個のファイル               3,009 バイト
              13 個のディレクトリ   3,028,328,448 バイトの空き領域

* 一部ディレクトリ名などは編集済み.
JUNCTION という情報は残っているようではあるが,D ドライブを正しく指していない.
確か,1607 でも一部(%Temp% 直下のジャンクション)がうまく引き継がれなかった.
ここが引き継げないのはわからなくもないが,Public\Documents 以下は何とかできないものか?


  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。