Microsoft Visual C++ 6.0 で、パスワード入力の必要なネットワークリソースのログインを行うようにするため、 WNetAddConnection2() を使ってみました。様々なサンプルコードを参考にプログラムを書きましたが、エラー1219が返されます。 自分のコンピューター:"MyComputer1" ユーザー認証によりログインしたいネットワーク上のコンピューター名と共有名 コンピューター名 : "ServPC02" 共有名 : "ShareData" ユーザー名 : "Admin" パスワード : "pass" こんな感じでプログラムを書きました。 class CMyTest { public: void Open(); }; void CMyTest::Open() { NETRESOURCE nr ; ZeroMemory(&nr , sizeof(NETRESOURCE) ); nr.dwType = RESOURCETYPE_DISK ; nr.lpLocalName = NULL ; nr.lpRemoteName = _T("\\\\ServPC02\\ShareData") ; nr.lpProvider = NULL ; DWORD dwResult = WNetAddConnection2(&nr , _T("pass") , _T("admin") , 0) ; } 戻り値は、dwResult = 1219 です。 ここで、コンピューター名 "ServPC02"のIPアドレスを gethostbyname() 関数により取得し、 nr.lpRemoteName = _T("\\\\192.168.2.100\\ShareName") ; としてWNetAddConnection2() を実行すると成功します。戻り値は0になり、この共有リソースの中にあるフォルダを検出することが可能になります。 なぜこのような現象が起こるのでしょうか? IPアドレスを取得してネットワークのユーザー認証を行わせる方法を取ればいいけれど、コンピューター名をそのまま設定するとエラーになる理由が知りたいです。 ファイアウォールの問題など、プログラミング以外の部分の問題でしょうか。 OSは、Windows Vista (32bit)です。
↧
WNetAddConnection2がエラーなぜ?
↧
visual studioの不要なDll削除方法
お世話になります visual studio 2010で教えていただきたいのですが 前任者から引き継いだ段階で、既に未使用のDLLがあり、 これを削除したいのですが、方法を教えていただけないでしょうか。 下記2か所で表示されるXXX.dllを削除したいのです (1)プロジェクトのプロパティ⇒構成プロパティ⇒C++⇒コマンドライン 「/FU"C:\・・・\XXX.dll"」 ※クリックでカーソルは表示&移動できるのですが、削除&編集ができません。 ここは、表示だけで、どこかに編集するところが有るのでしょうか? (2)ソリューションエクスフローラ⇒Setup⇒見つかった依存関係 「XXX.dll」 ※右クリックでメニューが表示されますが、「削除」の項目が無く、現在は「除外」を選択しています。
↧
↧
データの数を数えるfortran プログラム
横にm個、縦にn個の実数データが整然と並んでいます。ファイルを開いて読み込むのですが、縦横に何個のデータがあるかプログラムに感知させる方法があるでしょうか。 縦にn個のデータがあることは簡単でした。しかし横にm個あることを感知させるのが難しいです。今は、とにかく全データの個数を調べて、その個数をnで割って求めています。 全データを読む方はは、1個読んで巻き戻し、2個読んで巻き戻し、3個読んで巻き戻し、.... としてデータをこれ以上読めないというところまで読んでその個数が全データということになります。この部分がかなり時間を使います。データを開いてエディタで1行目のカラム数を数えればいいわけですが、プログラム的にはどうなるでしょうか。Cだったら、改行を感知させるという方法があるかもしれません。Fortranだったらどうなるでしょうか。 ※Fotranの専門の会議室がないのかなと思っていますが。
↧
WAVE⇔MP3のためのライブラリ
WAVE⇔MP3(相互変換)のためのWindows用ライブラリは 存在しますか?有料のものでもかまいません。 今まで画像処理でlibjpegやharu pdfを使ってきたのですが 音楽のライブラリが見つからなかったので質問させていただきました。 条件:Windows上でプログラミングを行う。 又、サンプルコードなどが紹介されているページがあれば そちらもご教授願います。
↧
VC++スレッドの正しい終了のさせかた
VC++6.0にてAfxBeginThreadで m_bAutoDelete = TRUEにてスレッドをおこしております。 この終了時に制御関数のwhileループを脱する様にし、 正常にスレッドを終了させているつもりです。 この後、再度(アプリは継続して起動したまま) AfxBeginThreadにて全く同じ処理で再開すると、 なぜか、前のスレッドが未だ動作しているかのごとく 制御関数内のTRACEが2重に出力されます。 再度、停止し、またスレッド起動すると、 今度は3重になったかの様な動作をします。 スレッドが正しく終了されていないのでは?と思った現象として、 1回起動時にアプリを終了させると正常終了しますが、 2回起動以上は必ずスレッドのメモリーリークが出ます。 メモリーリーク個所はAfxBeginThreadでした。 制御関数内で必要ないとは思いましたが、終了時に AfxEndThreadを使用しましたが現象は同じでした。 そこで質問です。 1)この現象は、スレッドが正常に終了されていない事に起因しているのでしょうか? 2)スレッドを正しく終了させるにはどうすればいいのでしょうか? 当方、制御関数がループを抜け、さらにm_bAutoDelete = TRUEであれば オブジェクトも自動的に破棄されると思っていたのですが。。。 以上、よろしくお願いします。
↧
↧
Winsock Connnect タイムアウト について
OS :WinXP SP3 言語:VC++ 2005 Winsock2の通信モジュールを開発中です。 connectのタイムアウト方法をネットで調べて下記の関数を 作成(完全引用)したのですが、上手くいきません。 WSAWaitForMultipleEventsでイベントが発生していない (接続先が存在しない)のですが処理が返ってきてしまいます。 何か間違っているのでしょうか?ご回答、宜しくお願い致します。 ----------------------------------------------------------------BOOL connect2 ( SOCKET aSock, char* dwAddr, int wPort, int nTimeout ) { int liRet, liErr, liRetflag = FALSE; unsigned long lulAddr = inet_addr ( dwAddr ); WSAEVENT hEvent; DWORD dwRet; WSANETWORKEVENTS Events; sockaddr_in Addr; // イベント作成 hEvent = WSACreateEvent(); if ( hEvent == WSA_INVALID_EVENT ) { return FALSE; } // イベント型に(自動的にノンブロッキングになる) liRet = WSAEventSelect( aSock, hEvent, FD_CONNECT ); if( liRet == SOCKET_ERROR ) { WSACloseEvent( hEvent ); return FALSE; } // 接続 ZeroMemory( &Addr, sizeof( Addr ) ); Addr.sin_family = AF_INET; Addr.sin_port = htons( ( unsigned short )wPort ); Addr.sin_addr.s_addr = lulAddr; if ( connect( aSock, ( struct sockaddr* )&Addr, sizeof( Addr ) ) == SOCKET_ERROR ) { liErr = WSAGetLastError(); // WSAEWOULDBLOCKの時はまだ接続されていないので続ける if ( liErr != WSAEWOULDBLOCK ) { goto END; } } *** ↓ここですぐ返ってきてしまい、WSA_WAIT_TIMEOUTにならない *** // イベント発生待機 dwRet = WSAWaitForMultipleEvents( 1, &hEvent, FALSE, 60000, FALSE ); // dwRetがWSA_WAIT_EVENT_0以外でエラー // dwRetがWSA_WAIT_TIMEOUTの時タイムアウト if ( dwRet != WSA_WAIT_EVENT_0 ) { goto END; } // どのイベントが発生したか liRet = WSAEnumNetworkEvents( aSock, hEvent, &Events ); if( liRet == SOCKET_ERROR ) goto END; // Events.iliErrorCode[FD_CONNECT_BIT]が0の場合成功 if( ( Events.lNetworkEvents & FD_CONNECT ) && Events.iErrorCode[FD_CONNECT_BIT] == 0 ) { liRetflag = TRUE; } END: // イベント型を終了 WSAEventSelect( aSock, NULL, 0 ); WSACloseEvent( hEvent ); // ブロッキングに戻す(必要なら) dwRet = 0; ioctlsocket( aSock, FIONBIO, &dwRet ); return liRetflag; } ----------------------------------------------------------------
↧
C言語のエラー LNK1120: 外部参照
#include "myhelper.h" #include "mymain_4.h" //自キャラのデータ Point2D g_jikipos = {40, 400}; //画像ハンドル int g_jikiimage[11]; //色々なファイルの読み込み int LoadFiles() { //画像ファイルの読み込み if (LoadDivGraph("media\\player01.bmp", 11, 11, 1, 64, 64, g_jikiimage) == -1) return -1; return 1; } .obj : error LNK2019: 未解決の外部シンボル (?MyMain_4@@YAXXZ) が関数 _WinMain@16 で参照されました。 error LNK1120: 外部参照 1 が未解決です。 .exeファイル この記述の時、こういったエラーに見舞われます。 プログラムの記述でしょうか? ネットで調べ、ファイルの形式をWIN32コンソールアプリケーションに変えても、 エラーが取れませんでした。 何か方法があればと思い質問します。 VC++の2010を使っています。
↧
インスタンス参照でアクセスできない。代わりに型名?
画面上に、 名前を入力するTextBoxがひとつと、 顧客情報を入力するDataGridViewがひとつあり、 そのDataGridViewには、連番、名前、メールアドレスの3列, 20行のデータがあります。 この2つのコントロールから入力されたデータをDBに登録したり、 DBから読み込んだ値を表示しようとしています。 (ほかにもいろいろ処理するのですが。) データを一時的に保持しておくクラスを作ろうと考え、 わざわざインスタンスを作るまでもないと思ったので、 staic public なメンバを使用して、 以下のようなクラスを作ってみました。 class Data { public class Customer { static public int no = 0; static public string name = ""; static public string mailAddr = ""; } static public string name = ""; static public Customer[] customers = new Customer[20]; } ところが、たとえば、 customers[0].no = 1; のようにしようとすると、 「インスタンス参照でメンバー 'Data.Customer.no' にアクセスできません。代わりに型名を使用してください。」 となります。 どういう意味でしょう? また、どうすれば static public の配列を持てるでしょうか? (そもそもこういうやりかたはしない?) よろしくお願いします。
↧
バイナリデータをテキストデータに変換
生データ(バイナリデータ)をテキストデータに変換するプログラムを教えてください。
↧
↧
C言語 代入演算子の意味をおしえてください
今、C言語を勉強しているものですが、代入演算子でわからないことがあるのでおしえてください。 *=, %=, -= などはわかるのですが、 <<=, >>=, &=, ^=, |= の意味がわかりません。 どなかか教えてください。よろしくお願いします。
↧
C言語のInvokeHelper
C言語素人です。下記のソースに似たようなものですが、ここでいうInvokeHelperは何をどう呼出しているのでしょうか。具体的にどこらへんを読んでいけばいいんでしょうか。お願いします。 http://svn.openfoundry.org/aesds2/%E7%89%A9%E4%BB%B6%E5%AE%9A%E4%BD%8D%E7%A8%8B%E5%BC%8F/PTZ%E5%8A%A0%E5%85%A5opencv/axismediacontrol.cpp void CAxisMediaControl::StartRecord(LPCTSTR theFile) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x68, DISPATCH_METHOD, VT_EMPTY, NULL, parms, theFile); }
↧
CArrayのソート
CArrayの中に、構造体を入れて使っているのですが、それを、ソートしたいのですが、可能でしょうか? 何か、関数(?)などあるのでしょうか? 環境 VC6(SP5)+Win2000 よろしくお願いします。
↧
CRC16計算について
CRC16のプログラムを作ったのでデバッグしていて気付いた事なのですが (産業装置で使うMODBUS-RTUのソフト) CRC16 x16+x15+x2+1 生成多項式 0xA001 CRC16でCRCを含めたデータを再CRCするとゼロになると言われておりますが そうならないのですが何故でしょう? もちろん、自分の作ったソフトが信用できないので他ソフトで検証 具体例 ベクターにあるCRC16の計算ソフト - CRC16.exe http://blog.goo.ne.jp/masaki_goo_2006/e/50b20edb79f60964faeaefe6fa064469 これに文字列"ABCD" [0x4142,0x4344]を入れて計算実行 出力結果 初期値:0xFFFF、出力XOR:0xFFFF、出力結果、右送り0x0F85 この出力を最初の文字列に追加する 0x4142,0x4344,0x0F85 結果は0xc7e6 となってゼロになりません やりかたが違うのでしょうか? 尚、私の作ったプログラムと上記ソフトの結果が同じです また、ネット上にある同様な他ソフトでも同じ結果でした (もちろんCRC計算条件が同じ物) 尚、上記ソフトで 初期値:0x0000、出力XOR:0x0000、左送り:9AA8 この場合のみCRC追加しての再CRCはゼロになりました ゼロになる場合とならない場合があるのでしょうか?
↧
↧
ファイルクローズ(fclose)でエラーを発生させる方法
ソースには一切手を加えず、(5)ファイルのクローズでエラー表示させる方法はないでしょうか。 #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp;/* (1)ファイルポインタの宣言 */ char s[256]; /* (2)ファイルのオープン */ /* ここで、ファイルポインタを取得する */ if ((fp = fopen("smpl.txt", "r")) == NULL) { printf("file open error!!\n"); exit(EXIT_FAILURE);/* (3)エラーの場合は通常、異常終了する */ } /* (4)ファイルの読み(書き)*/ while (fgets(s, 256, fp) != NULL) { /* ここではfgets()により1行単位で読み出し */ printf("%s", s); } if((fclose(fp)) == EOF){/* (5)ファイルのクローズ */ Logging(cfancname, 2); printf("ファイルクローズに失敗しました\n"); return -1; } return 0; } 宜しくお願いします。
↧
C# テキストファイルの中身のみを削除
テキストファイルの中身(内容)だけを削除したいのですが... フォルダやファイルを削除するのはできます。 しかし、中身(内容)のみを削除するにはどうしたらよいかわからずにいます。 教えていただけませんか?? お願いします。
↧
ASP.net 教えてください!!(初心者)
お世話になります。 ASP.net(C#)で単純なシステムをつくっているのですが、 プログラムでサーバー上のフォルダを削除すると、どうもSession情報が消されてしまうようです。 調べたところ、Web.configで↓ <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" /> を追加すればよいと書いてあったので、追加すると、 「セッション状態をシリアル化できません。'StateServer' および 'SQLServer' モードでは、ASP.NET はセッション状態オブジェクトをシリアル化します。その結果、シリアル化できないオブジェクトまたは MarshalByRef オブジェクトは許可されません。'Custom' モードのカスタム セッション状態ストアによって類似したシリアル化が実行される場合、同一の制限が適用されます。 」 ↑のエラーメッセージが出るようになってしまいました(><;)! 一体どのように回避すればよいのでしょうか・・・? どなたかご教授下さい。
↧
OpenCVで音声は扱えるか
OpenCVで扱えるのは映像・画像だけですか? 音付きのビデオ(aviやmpeg)から短いシーンを音も一緒に切りだすようなことはできますか? OpenCVてできないとしたら、こういうことを行うのに最も簡単なプログラミングの道具立ては何でしょうか? 言語はC, C++を前提にしています。
↧
↧
CRC8を教えてください
Cにて16ByteデーターをCRC8にかけたいのですがアルゴリズムがよく理解できません。 どなたかプログラムを教えていただけませんでしょうか? また、12Byteのときはプログラムが変わるのでしょうか?
↧
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
VC++の超初心者です. UpdateData( FALSE ); を用いてエディットボックスの文字列の表示の更新を 試みているのですが,たとえば,以下のコードのようにボタンをクリックした際に文字列表示の更新を複数回行おうとするとうまくいきません. 具体的には一回目のUpdateData( FALSE );が反映されず二回目のUpdateData( FALSE );のみ反映されるという症状です. なおm_mojiretsuはCstring型でエディットボックスのDDX用の変数です. void CMyDlg::OnButton1() { DWORD p; m_mojiretsu=_T("mojirstu1"); UpdateData( FALSE ); /*5秒の待ち*/ p=timeGetTime(); while(1){if((timeGetTime()-p)>5000) break;} m_mojiretsu=_T("mojirstu1\r\nmojirstu2"); UpdateData( FALSE ); } 何か別の処理を行わなければいけないのでしょうか. どこかに根本的なミスがあるのでしょうか. VC歴3日程度で,右も左も分からず大変困っております.よろしくお願いします.
↧
Visual C++のビルドで
こんにちは。VC++の初心者です。 今MFCアプリケーションでシングルドキュメントで「ユニコードライブラリをしようする」をチェックなしで簡単なプログラムを作ったのですが、HelloVCView.cppファイルの中で、 void CvdclsView::OnDraw(CDC* pDC) //■変更 /*pdc*/ → pDC { ・・・ pDC->TextOut(0,0,"Hello,VC++"); } と本に書いてあるとおり変更して、ビルドしたところ、 1>c:\documents and settings\・・\my documents\visual studio 2005\projects\vdcls\vdcls\vdclsview.cpp(51) : error C3872: '0x3000': この文字を識別子で使用することはできません 1>c:\documents and settings\・・\my documents\visual studio 2005\projects\vdcls\vdcls\vdclsview.cpp(52) : error C3646: ' ' : 不明なオーバーライド指定子です といった表示がでてしまい、ビルドできません。最初のほうはこれでビルドできたのですが、最近になってこのように新しく作ってビルドするとこのような表示が出てしまいます。このエラー表示をダブルクリックしたら上のOnDraw関数のところに移動しました。設定の箇所をいじったつもりはないのですがもしかしたらそのようなミスがあったかもしれません。 この0x3000とは何でしょうか?どのようにすればこのような問題が解決するのでしょうか。変な質問かもしれませんが、よろしくお願いします。 ちなみにVisual Studio 2005 Academic Editionを利用しています。
↧