• Thứ Tư, 01/06/2011 08:09 (GMT+7)

    Trả lời thư bạn đọc

    TS. Nguyễn Văn Hiệp
    Mục giải đáp thắc mắc của bạn đọc do TS. Nguyễn Văn Hiệp phụ trách.

    Câu hỏi
    Biến UInt32 khi sử dụng tạo DLL từ VC2005 bị lỗi “Error C2065: 'UInt32' : undeclared identifier c:\taodll\taodll.cpp”, trong khi Windows Forms thì không bị?

    Trả lời
    UInt32 không phải là tên kiểu sẵn có của ngôn ngữ. Thật vậy UInt32 là tên của một class được định nghĩa trong namespace System của môi trường .Net. Module mã nguồn nào cần dùng UInt32 thì phải dùng lệnh "using System;". Khi bạn dùng môi trường Visual Studio .Net để tạo trực quan 1 Windows Form, máy sẽ tạo sẵn khung sườn mã nguồn cho Form tương ứng, trong khung sườn mã nguồn này chứa sẵn lệnh "using System;", nhờ đó mà bạn dùng được class UInt32 mà không bị báo lỗi.

    Còn khi bạn lập trình bằng ngôn ngữ VC++, mã nguồn của hầu hết các loại Project VC++ đều không truy xuất được namespace System, do đó không thể dùng được class UInt32. Nếu muốn dùng class UInt32 trong code VC++, bạn phải tạo Project thuộc loại CLR (thí dụ như CLR Console Application), khai báo lệnh "using namespace System;" trước khi dùng class UInt32 để khai báo các biến dữ liệu của chương trình.

    Câu hỏi
    Tôi muốn kiểm tra có ai đã dùng máy tính của mình khi vắng mặt, có dịch vụ web nào thực hiện việc này?

    Trả lời
    Bạn không nói rõ mong muốn của mình, nên chúng tôi đưa ra 2 ý sau đây:

    1. Muốn kiểm tra lại xem máy có bị ai dùng trong lúc bạn đi vắng không?

    2. Muốn dùng dịch vụ nào đó để kiểm tra on-line xem ở nhà có ai đang dùng máy của bạn không ?

    Nếu bạn muốn ý 1 thì khi đi về, bạn chỉ cần boot máy, dùng trình duyệt file (Windows Explorer) xem thời điểm hiệu chỉnh lần cuối của file c:\pagefile.sys (hay bất kỳ file *.log nào trong thư mục c:\windows), nếu thời điểm xảy ra lúc bạn đi vắng thì chắc chắn có ai đó đã dùng máy bạn, còn dùng như thế nào thì không thể biết chính xác. Lưu ý rằng bạn phải thiết lập chế độ cho phép hiển thị file hệ thống và file ẩn để có thể xem được các file trên.

    Nếu bạn muốn ý 2 thì hiện nay chưa có dịch vụ, nhưng ý tưởng để viết phần mềm giải quyết vấn đề này cũng khá đơn giản: viết 1 phần mềm giám sát nhỏ và thiết lập cho nó chạy tự động mỗi lần boot máy, phần mềm này định kỳ gởi 1 e-mail (nội dung không quan trọng, không có cũng được) về account e-mail của bạn. Ở đâu đó, bạn dùng máy kiểm tra hộp thư của mình, kiểm tra thời điểm gởi e-mail của các e-mail do mình gởi để biết hiện có ai ở nhà đang dùng máy của mình không. Hiện nay việc dùng điện thoại di động cũng rất phổ biến, do đó thay vì gởi e-mail đến account của bạn, phần mềm giám sát trên máy của bạn có thể tạo tin nhắn SMS rồi gởi đến điện thoại di động của bạn.

    Câu hỏi
    Xin hỏi, tôi muốn thay đổi trang chủ trong Internet Explorer, nhưng khi chọn menu Tools.Internet options thì phần home page bị mờ đi, nên tôi không thể thay đổi trang chủ được.

    Trả lời
    Hiện tượng textbox nhập trang homepage của trình duyệt IE bị mờ là do ai đó (có thể là người, có thể là module add-ins được cài vào IE hay là malware nào đó) đã khóa nó. Để mở lại textbox này, bạn có thể tiến hành các thao tác sau:

    - Chọn menu Start.Run, nhập vào regedit (tên tiện ích hiệu chỉnh thông số cấu hình Windows) rồi click chuột vào button OK để chạy tiện ích này.

    - Dời chuột đến mục HKEY_LOCAL_MACHINE, mở rộng tuần tự các mục con sau đây: \Software\Policies\Microsoft\Internet Explorer\Control Panel

    - Chọn mục Control Panel để hiển thị nội dung của nó lên listbox bên phải.

    - Dời chuột và ấn phải chuột vào vị trí trống thích hợp trong listbox bên phải, chọn option New.Dword value, nhập vào tên mới là HomePage.

    - Ấn phải chuột vào mục HomePage mới tạo được, chọn option Modify để hiển thị cửa sổ hiệu chỉnh, sửa giá trị "Value data" hiện hành là 1 (khóa) thành 0 (mở khóa textbox nhập homepage).

    - kiểm tra xem có mục HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel không. Nếu có hãy tiến hành các bứơc như trên để hiệu chỉnh lại giá trị của nó về 0.

    - Đóng cửa sổ tiện ích regedit lại, đóng các cửa sổ IE đang mở (nếu có) rồi chạy lại IE, nếu vào chức năng Tools.Internet Options, bạn sẽ thấy textbox homepage đã được mở.

    Câu hỏi
    Xin hỏi khi quảng cáo trang web của mình trên một trang rao vặt thì làm sao để từ trang rao vặt vào thẳng trang web của mình?

    Trả lời
    Bạn không nói rõ bạn quảng cáo trên trang rao vặt nào, khả năng soạn nội dung quảng cáo trên trang rao vặt đó ra sao nên chúng tôi chỉ trả lời tổng quát. Nếu module soạn thảo nội dung rao vặt hỗ trợ định dạng HTML hay XML thì việc tạo link đến các tài nguyên Internet bất kỳ rất dễ dàng, bạn chỉ cần dùng tag lệnh <a href=địa chỉ trang web của bạn> là đủ. Hơn nữa, nếu module soạn thảo nội dung quảng cáo có hỗ trợ việc soạn thảo trực quan thì bạn chỉ cần dùng option lệnh hay icon lệnh tương ứng để chèn link (tag lệnh <a href>) khi cần.

    Câu hỏi
    Tôi có một tài khoản nqt...@gmail.com và 1 tài khoản nqt...@ymail.com (của yahoo). Tôi muốn đẩy toàn bộ các email trong tài khoản ymail vào tài khoản Gmail thì làm cách nào? Xin hỏi địa chỉ máy chủ, pop, cổng truy cập vào tài khoản trên ymail?

    Trả lời
    gmail.com và ymail.com đều là dịch vụ e-mail thông qua web. Nếu dùng dịch vụ webmail, bạn thường phải truy cập trang web của hãng để thực hiện việc quản lý hộp thư hay gởi e-mail cho người khác. Thường trang web của hãng cũng cung cấp các chức năng xử lý hộp thư phổ dụng như duyệt xem danh sách các e-mail, xem chi tiết nội dung từng e-mail, delete, reply, forward e-mail... Tuy nhiên chức năng forward e-mail của các trang web này thường chỉ cho phép thực hiện trên từng e-mail chứ không cho phép tác động trên tất cả e-mail đồng thời. Nếu hộp thư trong tài khoản gmail.com của bạn chưa có nhiều e-mail, bạn có thể chọn từng e-mail rồi forward nó sang tài khoản ymail.com.

    Nếu cần chuyển tự động nội dung hộp thư từ gmail.com sang ymail.com nhiều lần theo thời gian, bạn cần phải viết 1 chương trình phần mềm thực hiện chức năng này. Thường để truy xuất hộp thư của tài khoản nào đó, bạn sẽ gởi các lệnh của giao thức POP (Post Office Protocol) đến server POP quản lý tài khoản e-mail tương ứng. Tương tự để gởi e-mail đến tài khoản được quản lý bởi server nào đó, bạn phải gởi các lệnh của giao thức SMTP (Simple Mail Transfer Protocol) đến server SMTP tương ứng. Trước khi viết phần mềm, bạn cần phải đọc và nắm vững các lệnh request/reply của từng giao thức (SMTP và POP).

    Sau đây là tên và cổng giao tiếp của 1 số server của các Webmail phổ biến:

    - để gởi e-mail tới account gmail.com, bạn dùng server SMTP có tên là smtp.gmail.com, port là 25.

    - để đọc e-mail trong hộp thư của tài khoản gmail.com, bạn dùng server POP có tên là pop.gmail.com, cổng 995.

    - để gởi e-mail tới account ymail.com, bạn dùng server SMTP có tên là plus.smtp.mail.yahoo.com, port là 465.

    - để đọc e-mail trong hộp thư của tài khoản ymail.com, bạn dùng server POP có tên là plus.pop.mail.yahoo.com, port là 995.

    - để gởi e-mail tới account hotmail.com, bạn dùng server SMTP có tên là smtp.live.com, port là 25.

    - để đọc e-mail trong hộp thư của tài khoản hotmail.com, bạn dùng server POP có tên là pop3.live.com, cổng 995.

    Lưu ý rằng các thông tin của các server SMTP và POP trên có thể bị thay đổi theo thời gian. Để kiểm tra xem thông tin về địa chỉ và port giao tiếp của 1 server SMTP nào đó có đúng không, bạn hãy thực hiện các thao tác sau:

    - Chọn menu Start.Run, nhập lệnh cmd rồi click chuột vào button OK để tạo cửa sổ Command.

    - Nhập lệnh Telnet <Enter> để chạy tiện ích truy cập từ xa Telnet.

    - Nhập lệnh Open smtp.gmail.com 25 <Enter> để nối kết với server SMTP tương ứng.

    Nếu màn hình hiển thị thông báo reply có nội dung "220 ..." thì thông số về server SMTP là đúng.

    Tương tự, để kiểm tra xem thông tin về địa chỉ và port giao tiếp của 1 server POP nào đó có đúng không, bạn hãy thực hiện các thao tác sau:

    - Chọn menu Start.Run, nhập lệnh cmd rồi click chuột vào button OK để tạo cửa sổ Command.

    - Nhập lệnh Telnet <Enter> để chạy tiện ích truy cập từ xa Telnet.

    - Nhập lệnh Open pop.gmail.com 995 <Enter> để nối kết với server POP tương ứng.

    Nếu màn hình hiển thị thông báo reply có nội dung "+OK ..." thì thông số về server POP là đúng.

    Câu hỏi
    Xin hướng dẫn cách tạo 1 chương trình liệt kê ổ đĩa và thư mục vào trong 1 TreeView bằng Win32 API, giống như chức năng của Norton Commander.

    Trả lời
    Đối tượng giao diện TreeView (tên chính xác là CTreeCtrl trong VC++) là đối tượng tổng quát, nó cho phép hiển thị và xử lý các dữ liệu bất kỳ có mối quan hệ dạng cây phân cấp, thí dụ như hiển thị cây gia phả, cây tổ chức các ban ngành nhà nước, cơ quan,... Để hiển thị cây thư mục của ổ đĩa, ta có thể định nghĩa đối tượng mới, thí dụ với tên là CDirTreeCtrl, đối tượng này thừa kế tất cả các tính chất của đối tượng TreeView sẵn có, ta chỉ cần override 1 vài hàm chức năng để nó có thể hiển thị nội dung dạng cây phân cấp của ổ đĩa.

    Sau đây là qui trình điển hình để xây dựng ứng dụng VC++ cho phép duyệt xem nội dung của hệ thống file trên máy bằng cách dùng đối tượng mới CDirTreeCtrl :

    1. Chạy VC++, chọn menu File.New để hiển thị cửa sổ New. Chọn tag Project, chọn mục "MFC AppWizard (exe)", chọn vị trí thư mục chứa Project, nhập tên Project quản lý phần mềm vào textbox "Project Name" (thí dụ tên là DirFileDispDemo), click chuột vào button OK để bắt đầu qui trình Wizard đặc tả các thông số cho Project.

    2. Trong cửa sổ Step 1, đánh dấu chọn optionButton "Dialog Based" rồi click button Finish để tạo ứng dụng dùng Form giao diện đơn giản.

    3. Khi cửa sổ thiết kế Form ứng dụng hiển thị, chọn từng đối tượng giao diện trong Form và xóa đi để đưa Form về trạng thái trống hoàn toàn.

    4. Vẽ các đối tượng giaodiện trong Form có dạng sau, gồm 1 label, 1 ComboBox, 1 button và 1 TreeCtrl :

    Câu hỏi
    Khi tôi sử dụng WMP 9 thì nghe được khi vào nghe đài tiếng nói VN tại website http://vov.vn/mediaselector.asp nhưng khi nâng cấp WMP lên version 11 thì không thể nghe được nữa, click chuột phải lên control WMP chọn Error Detail thì có thông báo: Windows Media Player cannot connect to the sever. The server name might not be correct, the server might not be available, or your proxy setting might not be correct. Tôi đã thử thiết đặt lại Proxy nhưng không thể nghe được, xin hỏi cách khắc phục.

    Trả lời
    Nội dung câu hỏi của bạn chưa rõ ràng, chúng tôi thử truy cập trang web ở địa chỉ do bạn cung cấp (http://vov.vn/mediaselector.asp) thì máy báo là không có trang web này. Chúng tôi thử truy cập website có địa chỉ http://vov.vn thì máy hướng đến website http://vovnews.vn, trang chủ của website này cho phép nghe/xem các kênh VOV khác nhau, chúng tôi thử truy cập từng kênh, chúng đều chạy tốt. Chúng tôi nhận thấy các kênh đều dùng đối tượng Adobe Flash Player để phát nội dung, chứ không thấy kênh nào dùng đối tượng WMP cả.

    ID: A1105_108