C++ Builder > 메모리가 부족함 (Abnormal Program Termination) 디스플레이를 다른 소프트웨어에서 감지 + 알파

운영 환경
C++ Builder XE4

관련



C++ Builder > 메모리가 부족합니다 (Abnormal Program Termination) > 재현 방법

위의 오류가 발생한 소프트웨어를 찾으려면 어떻게합니까?

상황으로서는 이하가 되는 것 같다.
  • 메시지의 윈도우 캡션은 "실행 파일 이름 (.exe 없음)"이됩니다.
  • 예: Project1


  • code



    FindWindow

    Unit2.cpp
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
        HWND hwnd;
    
        hwnd = FindWindow(NULL, L"Project1");
        if (hwnd == NULL) {
            return;
        }
    
        ShowMessage("found");
    }
    //---------------------------------------------------------------------------
    

    실행 예



  • C++ Builder > 메모리가 부족합니다 (Abnormal Program Termination) > 재현 방법 에서 빌드한 Project1.exe를 실행합니다.
  • Project1 양식의 버튼을 눌러 오류 메시지를 표시합니다.
  • 위의 코드를 빌드 한 소프트 Project2.exe를 실행
  • Project2 양식의 버튼을 누르십시오





  • 플러스 알파



    @ 우시 오토 토라

    우시오토라의 행동을 보아 온 친한 자들에게 말한다. 이것보다 먼저는 봐서는 안된다… 그건 보지 않아도 좋은 이야기. 보지 않아도 좋다. 보면 마음껏 반드시 후회한다.

    주의: 다음은 근본 원인 해결책이 아닙니다.

    "메모리가 부족합니다."표시에 대해 OK를 누르는 처리.

    Unit2.cpp
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
        HWND hwnd;
    
        hwnd = FindWindow(NULL, L"Project1");
        if (hwnd == NULL) {
            return;
        }
    
        SetForegroundWindow(hwnd);
        keybd_event(VK_RETURN, 0, 0, 0);
    }
    //---------------------------------------------------------------------------
    

    좋은 웹페이지 즐겨찾기