我想用VC来实现DOS功能,就是来个系统调用。当在运行后的界面上输入DOS命令是他能够显示相应的内容。例如输入:Dir C:将显示C:盘内容。
急急。
在线等待。不胜感激!!!!

解决方案 »

  1.   

    http://www.codeguru.com/console/index.shtml
      

  2.   

    我想的是在界面上输入命令。那位仁兄的方法我试过了!
    int main() 
    {   int i=10;char p[10]; 
    do{  
       cin>>p; 
    system(p); 
    i--; 
    }while(i>1); 
    return 0; } 
    我想在这个程序实现系统调用; 
    但我发觉在我输入dir时显示当前目录的东西,而在输入dir e:时也是显示同样的东西,一查原来在DOS界面上输入时,遇到空格则截断就是只有dir,后面的字符就没有了,如何解决这个问题。或者高手教我一个啊! 
    不胜感激! 
      
      

  3.   

    简单,我给你做一个在mfc中使用dos得力子!
      

  4.   

    告诉我怎么修改上面那个程序好了。MFC的我还不会用!
      

  5.   

    CALL叫高手,CALL叫高手!高手,高手,我是菜鸟,收到没有,收到没有?
      

  6.   

    system( "dir c: > lst.tmp" );
    CStdioFile f;
    f.Open( "lst.tmp",... );
    CString str;
    f.ReadString( str );
    ...
    m_edit.SetWindowText( str );
    ...
      

  7.   

    CALL叫高手,CALL叫高手!高手,高手,我是菜鸟,我是菜鸟,收到没有,收到没有?
      

  8.   

    class CParseEdit : public CEdit
    {
    // Construction
    public:
    CParseEdit();
    public:
    CString strTemp;
    // Attributes
    public:// Operations
    public:// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CParseEdit)
    //}}AFX_VIRTUAL// Implementation
    public:
    virtual ~CParseEdit(); // Generated message map functions
    protected:
    //{{AFX_MSG(CParseEdit)
    afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
    //}}AFX_MSG DECLARE_MESSAGE_MAP()
    private:
    void ParseCommandLine(CString str);
    };
    -----------------------------------------
    void CParseEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nChar!=VK_RETURN)
    {
    CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    else if(strTemp!="")
    ParseCommandLine(strTemp);
    GetWindowText(strTemp);
    }void CParseEdit::ParseCommandLine(CString str)
    {
    str+=" >ParseCommand.txt";
    system(str);

    CStdioFile fileTemp;
    fileTemp.Open("ParseCommand.txt",
     CFile::modeCreate|CFile::modeNoTruncate |CFile::modeReadWrite |
     CFile::shareDenyNone|CFile::typeText); fileCommandResult.Open("CommandFileResult.txt",
     CFile::modeCreate|CFile::modeNoTruncate |CFile::modeWrite |
     CFile::shareDenyNone|CFile::typeText); fileTemp.SeekToBegin(); fileCommandResult.SeekToEnd(); while(fileTemp.ReadString(strTemp))
    {
    strTemp+="\r\n";
    fileCommandResult.WriteString(strTemp);
    }
    fileCommandResult.Close(); fileCommandResult.Open("CommandFileResult.txt",
    CFile::modeCreate|CFile::modeNoTruncate |CFile::modeRead |
    CFile::shareDenyNone|CFile::typeText); fileCommandResult.SeekToBegin();

    CString strCommandResult;
    while(fileCommandResult.ReadString(strTemp))
    {
    strTemp+="\r\n";
    strCommandResult+=strTemp;
    } CFrameWnd *pFrame=(CFrameWnd*)AfxGetMainWnd();
    CView *pView=pFrame->GetActiveView();
    if(pView)
    {
    pView->SetWindowText(strCommandResult);
    CEdit &editCtrl=((CEditView*)pView)->GetEditCtrl();
    editCtrl.SetSel(0,0);
    int linecount=editCtrl.GetLineCount();
    editCtrl.LineScroll(linecount);
    } fileCommandResult.Close();

    }
    ---------------------------------
    void CSystemCommandView::OnInitialUpdate() 
    {
    CEditView::OnInitialUpdate(); CMainFrame *pFrame=(CMainFrame*)::AfxGetMainWnd();
    CDialogBar &pDialogBar=pFrame->m_CommandBar;
    CWnd *pWnd=pDialogBar.GetDlgItem(IDC_EDIT_PARSE);
    m_ParseEdit.SubclassWindow(pWnd->m_hWnd);
    }
    ---------------------CSystemCommandApp theApp;HANDLE consoleStdout,consoleStdin;CStdioFile fileCommandResult;/////////////////////////////////////////////////////////////////////////////
    // CSystemCommandApp initializationBOOL CSystemCommandApp::InitInstance()
    {
    ......

    ::AllocConsole();
    consoleStdin=::GetStdHandle(STD_INPUT_HANDLE);
    consoleStdout=::GetStdHandle(STD_OUTPUT_HANDLE);
    if(consoleStdin==consoleStdout)
    return false;

    char consoleName[256];
    ::GetConsoleTitle(consoleName,256);
    HWND hwnd=::FindWindow("ConsoleWindowClass",consoleName);
     if(hwnd)
     ::SendMessage(hwnd,WM_SYSCOMMAND,(WPARAM)SC_MINIMIZE,0); fileCommandResult.Open("CommandFileResult.txt",
     CFile::modeCreate |CFile::modeWrite |
     CFile::shareDenyNone|CFile::typeText);
    fileCommandResult.Close(); .....
    }
    -----------------------------------------
    我帮你实现了一个比较完美的commandline 程序!
    我将将命令执行结果发送到了CEditView视图中!
    ^-^!
    需要的话发邮件到:
    [email protected]
      

  9.   

    #include "stdafx.h"
    #include "iostream.h"
    #include <process.h>int main(int argc, char* argv[])
    {
    char buffer[256];
    cin.getline(buffer,256);
    system(buffer);
    return 0;
    }---------------
    上面的做法最简单