Thứ Năm, 27 tháng 12, 2012

Media Player C# using MCI

I) Giới thiệu

Trong nhiều trường hợp, bạn cần sử dụng âm thanh trong ứng dụng của mình để thông báo hay tạo một hiệu ứng nào đó. Bạn nghĩ tới việc sử dụng lớp System.Media.SoundPlayer cho yêu cầu này, và bạn nhận ra nó có một hạn chế là chỉ chơi được các định dạng .wav. Một giải pháp khác là bạn dùng control Window Media Player có sẵn trong Windows, đây là một giải pháp hay. Nhưng nếu bạn không muốn lệ thuộc vào control này, bạn cần tìm một con đường khác và có thể bạn sẽ tìm được nó khi đọc phần tiếp theo của bài viết này.

Trong bài này, tôi sẽ trình bày cách tạo một chương trình để chơi các định dạng âm thanh và video với các chức năng cơ bản như play, pause, stop, seek…thông qua Media Control Interface (MCI). Để biết thêm các thông tin và cách sử dụng MCI bạn có thể tham khảo trên MSDN của Microsoft.

MCI Player

Giao diện mô phỏng của ứng dụng sau khi hoàn thành.

II) Thiết kế

Trước tiên, để ứng dụng của bạn OOP hơn, hãy tạo một lớp để quản lý chức năng chơi nhạc, ví dụ ở đây tôi đặt tên lớp là MciPlayer. Lớp này sẽ chứa những hàm cơ bản để ta điều khiển quá trình chơi nhạc.

Để sử dụng được MCI bạn cần thêm hàm API mciSendString nằm trong tập tin winmm.dll của Windows. Hãy thêm namespace System.Runtime.InteropServices vào trước khi import tập tin winmm.dll. Đây là đoạn mã import thư viện winmm.dll và khai báo hàm API mciSendString để sử dụng trong chương trình.

[DllImport("winmm.dll")]

private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

Trong đó bạn cần chú ý đển tham số strCommand, đây là chuỗi chứa lệnh MCI cần thực hiện. Bạn có thể xem danh sách lệnh tại địa chỉ bên dưới

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_multimedia_command_strings.asp

Sau đây là các phương thức căn bản trong lớp MciPlayer của ta.

1) Mở media:

public void Open(string filePath)

{

string sCommand = "open \"" + filePath +"\" type mpegvideo alias YinYangMedia";

mciSendString(sCommand, null, 0, IntPtr.Zero);

}

Trong chuỗi sCommand, chú ý rằng đường dẫn tập tin media của bạn phải chứa trong ngoặc kép nên ta phải dùng chuỗi \" để bao phần filePath lại. Ở đây chuỗi mpegvideo để xác định rằng chúng ta có thể chơi hầu hết các định dạng media hiện nay như mp3, avi, wav, mpeg, mpg and wmv…Ở đây tôi sử dụng tên định danh YinYangMedia cho tập tin Media, bạn có thể thay đổi tên khác tùy thích nhưng phải thống nhất trong những lần gọi hàm khác.

2) Play, Pause, Stop, Seek, Close media:

public void Play()

{

mciSendString("play YinYangMedia", null, 0, IntPtr.Zero);

}

public void Pause()

{

mciSendString("pause YinYangMedia", null, 0, IntPtr.Zero);

}

public void Stop()

{

try{

mciSendString("stop YinYangMedia", null, 0, IntPtr.Zero); }catch{}

}

public void Seek(long value)

{

value = value * 1000;

mciSendString("seek YinYangMedia to " + value.ToString(), null, 0, IntPtr.Zero);

Play();

}

public void Close()

{

try{

mciSendString("close YinYangMedia", null, 0, IntPtr.Zero);

}catch {}

}

Phương thức Seek sẽ nhảy đến vị trí xác định bằng tham số value truyền vào và play tại vị trí đó, tham số value truyền vào có đơn vị là giây vì thế ta nhân với 1000 để chuyển sang mili giây.

Trường hợp bạn muốn chơi một file media khác, trước tiên bạn cần đóng (close) media hiện tại. Để tiện hơn bạn có thể thêm phương thức Close() vào đầu phương thức Open() phía trên.

3) Hiển thị cửa sổ xem video

Chức năng play trên chỉ đơn giản làm nhiệm vụ phát âm thanh. Nếu bạn đang chơi một file video và cần hiển thị hình ảnh, hãy sử dụng phương thức sau:

public void DisplayMediaWindow()

{

mciSendString("put YinYangMedia", null, 0, IntPtr.Zero);

}

Phương thức này sẽ mở cửa sổ video với kích thước mặc định, nếu bạn muốn xác định vị trí và kích thước của cửa sổ được mở, hãy overload hoặc sửa lại phương thức này như sau:

public void DisplayMediaWindow(Rectangle rec)

{

mciSendString("put YinYangMedia window at " + rec.Left + " " + rec.Top +

" " + rec.Width + " " + rec.Height, null, 0, IntPtr.Zero);

}

Phương thức mới này truyền vào đối tượng Rectangle đại diện cho vị trí và kích thước của cửa sổ sẽ mở với gốc tọa độ là góc trên bên trái màn hình. Thay vì truyền vào một Rectangle, bạn cũng có thể overload thêm một phương thức truyền vào 4 tham số xác định vị trí left, top, width và height của cửa sổ.

4) Lấy trạng thái của player

Để xác định xem player của chúng ta đang ở trạng thái nào, bạn hãy viết một phương thức hoặc getter như sau:

public string Status

{

get

{

int length = 128;

StringBuilder strBuffer = new StringBuilder(length);

mciSendString("status YinYangMedia mode", strBuffer,

length, IntPtr.Zero);

return strBuffer.ToString();

}

}

Tham số strBuffer là biến lưu kết quả trả về, length là độ dài của độ dài của bộ đệm chứa kết quả tính bằng kí tự.

Bởi vì kết quả là kiểu string và chỉ thuộc một trong 3 trạng thái "playing","paused", "stopped". Bạn có thể tạo một enum chứa các trạng thái của player này, bổ sung thêm một trạng thái "Ready" nếu như hàm Open thực thi thành công, mỗi khi thực hiện lệnh nào đó, player của chúng ta sẽ tự động thay đổi trạng thái. Ví dụ như sau:

public enum PlayerStatus { Ready, Playing, Paused, Stopped };

Gợi ý: bạn thêm một thuộc tính kiểu PlayerStatus và danh sách các tập tin Media cần chơi vào player, khi chơi hết một bài hãy tiếp tục bài tiếp theo trong danh sách.

5) Lấy chiều dài, vị trí hiện tại của media:

Lấy tổng thời gian cần để chơi hết file tính bằng giây đã được làm tròn.

public long Length

{

get

{

StringBuilder fileleng = new StringBuilder(256);

mciSendString("status YinYangMedia length", fileleng, 256, IntPtr.Zero);

try

{

return (long)Math.Floor(Convert.ToDouble(fileleng.ToString().Trim()) / 1000);

}

catch { return 0; }

}

}

Vị trí đang chơi hiện tại của file tính bằng giây

public long Current

{

get

{

StringBuilder fileleng = new StringBuilder(256);

mciSendString("status YinYangMedia position", fileleng, 256, IntPtr.Zero);

try

{

return (long)Math.Floor(Convert.ToDouble(fileleng.ToString().Trim()) / 1000);

}

catch { return 0; }

}

}

Để hiển thị theo dạng mm:ss bạn cần viết thêm phương thức để tính số phút và số giây, sau đó format theo định dạng thích hợp. Ví dụ bạn tạo ở Form thực thi hương thức sau để format:

private string FormatSeconds(long seconds)

{

long minus = 0;

if (seconds <>

{

minus = seconds / 60;

seconds = seconds % 60;

return minus.ToString().PadLeft(2, '0′)

+ ":" + seconds.ToString().PadLeft(2, '0′);

}

// …

Hàm PadLeft sẽ lấp đầy bên trái chuỗi bằng kí tự '0' cho đến khi đủ số kí tự quy định. Giả sử số phút là 1 và giây là 2, kết quả trả về sẽ là '01:02'.

Phần cốt lõi của chương trình đã hoàn thành, bạn hãy tạo giao diện và thêm vào một trackBar để kiếm tra phương thức Seek và các chức năng khác của lớp MciPlayer.


Để lấy hoặc thay đổi giá trị volumn bạn có thể sử dụng 2 hàm waveOutGetVolume() và waveOutSetVolume() nằm trong cùng thư viện winmm.dll được sử dụng trong ví dụ trên.
Bạn khai báo 2 hàm trên như sau:

[DllImport("winmm.dll")]
public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);

[DllImport("winmm.dll")]
public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);

Tham số hwo bạn có thể đặt là IntPtr.Zero, còn dwVolume của 2 hàm trên chính là giá trị của volumn khi bạn lấy hoặc gán.

III) Phần kết:

Với các chức năng cơ bản của lớp MciPlayer vừa tạo, bạn có thể tự thiết kế cho mình một ứng dụng MultiMedia đa năng như quản lý nhạc, tự động tắt máy, màn hình, tạo playlist sử dụng các collection,…

http://yinyang-it.tk


Vubka Blog: Simple Way

Thứ Tư, 12 tháng 12, 2012

8 mẹo sử dụng tính năng hẹn giờ cho bài viết trên Facebook

Bạn có eo hẹp thời gian không?

Bạn có sử dụng một số công cụ tự động của Facebook không? Bài viết này sẽ giúp bạn.

Facebook cho phép bạn hẹn giờ cập nhật bài viết trên trang công cộng.

Rất nhiều người thích chức năng này bởi vì thuật toán xếp hạng trên Facebook và thói quen sử dụng các công cụ cập nhật khác như HootSuite hoặc SocailOomph khiến cho các bài viết của bạn không được thu hút bằng các bài viết được cập nhật theo cách thông thường.

Hãy xem xét vấn đề một cách kỹ càng hơn và tìm ra một số điểm khi bạn sử dụng tính năng hẹn giờ cho bài viết trên Facebook.

Đầu tiên, hãy tìm hiểu các bước để hẹn giờ cho bài viết và chỉnh sửa các bài viết đó.

#1: Làm thế nào để hẹn giờ cho bài viết

Hẹn giờ cập nhật cho bài viết rất đơn giản, bạn chỉ cần làm theo các bước sau:

Hãy viết cập nhật của bạn như cách thông thường. Bạn có thể đính kèm ảnh, link, video trên Youtube, gắn thẻ cho các trang khác hoặc sự kiện hoặc chỉ cần viết chữ.

schedule your post

Dưới góc trái của bài viết, hãy click vào biểu tượng đồng hồ như ảnh trên. Bạn có thể thêm năm, tháng, ngày và thời gian chính xác mà bạn muốn bài viết sẽ xuất hiện.
add the date

 
Bạn có thể gắn mốc thời gian trong quá khứ cho các bài viết để bổ sung vào Facebook timeline của bạn nếu muốn (tôi sẽ nói kỹ hơn ở phần sau của bài viết này).

Bạn có thể hẹn giờ bài viết tối đa 6 tháng (có nhiều hơn 6 tháng hiển thị trong khung chọn nhưng Facebook không cho phép bạn chọn nhiều hơn 6 tháng) theo số phút chẵn chục (00, 10, 20, 30, 40, 50). Vì thế bạn không thể hẹn giờ để bài viết của bạn hiển thị lúc 2h15.

Bạn cũng có thể thêm ngôn ngữ hoặc địa điểm khi hẹn giờ cho bài viết như khi bạn cập nhật bài viết thông thường. Bạn chỉ cần click vào biểu tượng Public và thực hiện các điều chỉnh cần thiết.

Khi bạn đã điều chỉnh mọi thứ, chỉ cần click vào nút Schedule màu xanh, thế là xong. Bây giờ bạn chỉ cần nhớ thời gian bài viết hiển thị để theo dõi số lượng bình luận thôi.

#2: Làm thế nào để tìm và sửa những bài viết đã được hẹn giờ

Để xem các bài viết bạn đã hẹn giờ và chỉnh sửa chúng, hãy vào phần lịch sử hoạt động (Activity Log) từ bảng điều khiển trên đầu trang (nếu bạn không thấy bảng điều khiển, hãy click vào nút Admin màu đỏ ở góc phải trên cùng của trang), sau đó chọn Edit Page và Activity Log. Bạn sẽ thấy tất cả các bài viết mà bạn đã hẹn giờ.

find activity log

activity log

Xem lại các bài viết bạn đã hẹn giờ.

Nếu muốn chỉnh sửa bài viết đã hẹn giờ, bạn chỉ có thể chỉnh sửa về mặt thời gian. Nếu bạn muốn chỉnh sửa câu chữ, bạn phải hủy bài viết và hẹn giờ lại. Để chỉnh sửa thời gian, hãy di chuột đến góc phải trên cùng của bài viết trong phần lịch sử hoạt động (Activity Log).

editing a post

Bạn chỉ có thể thay đổi thời gian đã hẹn hoặc hủy bài viết và hẹn giờ lại từ đầu.

Bạn có thể hẹn giờ cho bài viết bao gồm các đường link, ảnh, trạng thái và video (mặc dù tôi thấy tính năng hẹn giờ cho video hơi bị lỗi). Bạn cũng có thể hẹn giờ cho 1 link video trên Youtube, link này sẽ hiển thị như khi bạn cập nhật theo cách thông thường.

schedule a photo

Bạn có thể hẹn giờ cho một bức ảnh.

Bạn không thể hẹn giờ hiển thị cho album ảnh, sự kiện, câu hỏi và các mốc thời gian.
#4: Bạn có thể hẹn giờ bài viết cho thời điểm trong quá khứ

Bạn có thể hẹn giờ bài viết cho thời điểm trong quá khứ. Tôi không chắc tại sao bạn lại muốn sử dụng tính năng này trên Facebook ngoài lý do lấp đầy giao diện timeline. Nhưng nếu bạn có một sự kiện quan trọng đã diễn ra trong quá khứ, bạn nên đánh dấu chúng bằng mốc thời gian (milestones) thay vì bài viết.

Điều thú vị về việc hẹn giờ bài viết cho thời điểm trong quá khứ là bài viết đó sẽ không xuất hiện trong mục tin mới của mọi người theo dõi trên Facebook mà sẽ xuất hiện tại vị trí tương ứng với thời gian trên timeline của bạn.
back dating a post

Bài viết được hẹn giờ tại thời điểm trong quá khứ sẽ hiện lên trên dòng tin kèm thông báo về thời gian bài viết được thêm vào trên timeline.

#5: Các bài viết được hẹn giờ sẽ không được tự động cập nhật trên Twitter

Nếu bạn liên kết tài khoản Twitter với tài khoản Facebook để những gì bạn cập nhật trên Facebook cũng sẽ được hiển thị trên Twitter (tôi biết việc này không phải là một ý tưởng tuyệt vời lắm nhưng đôi khi nó cũng không tệ), hãy lưu ý rằng những bài viết được hẹn giờ của bạn sẽ không xuất hiện trên Twitter.

Nếu bạn phụ thuộc vào Facebook để cập nhật Twitter và muốn sử dụng tính năng hẹn giờ cập nhật, bạn cần phải cập nhật Twitter bằng một công cụ khác.

#6: Các bài viết hẹn giờ có thể gây chú ý hơn

Bạn mong đợi điều gì khi hẹn giờ bài viết? Điều này phụ thuộc vào trang Facebook hiện tại của bạn – tần suất cập nhật của bạn thế nào, mối liên kết của bạn với độc giả ra sao, bạn cập nhật những gì lên trang và một vài yếu tố khác.

Tính năng hẹn giờ có thể giúp bạn cập nhật trang thường xuyên hơn, tăng chất lượng nội dung trên Facebook và tiết kiệm thời gian cho bạn.

Randi Thompson, người sở hữu trang How to Market Your Horse Business (đồng thời là một thành viên tích cực của Câu lạc bộ kết nối mạng xã hội của chúng tôi) đã thử nghiệm tăng số lượng bài viết bằng cách sử dụng tính năng hẹn giờ trên 2 trang công cộng.

Trên trang How to Market Your Horse Business, cô ấy đã thay đổi tần suất cập nhật, từ 3 lần 1 ngày lên 3 tiếng 1 lần và 5 lần 1 ngày. Ở một trang khác, Horse and Rider Awareness, cô ấy không thường xuyên cập nhật gì cả. Cô ấy đã thử hẹn giờ 3 bài viết chất lượng trong 1 ngày. Dướu đây là kết quả thử nghiệm sau 5 ngày:
horse business horse awareness

Sử dụng chức năng hẹn giờ bài viết giúp tăng lượng bài viết và lượng độc giả tương tác với trang.

Tất nhiên đây không phải là một nghiên cứu chuyên sâu. Và bạn có thể tăng lượng độc giả tương tác với trang một cách thông thường mà không cần sử dụng tính năng hẹn giờ. Nhưng tính năng hẹn giờ có thể giúp mọi việc của bạn trở nên dễ dàng hơn khi biết rằng các bài viết sẽ xuất hiện đúng lúc bạn mong muốn và trong khi đó bạn có thể làm việc khác. Tôi khuyên bạn nên thử nghiệm tính năng hẹn giờ này trên trang công cộng và xem kết quả. Và bạn đừng quên theo dõi những bài viết và các bình luận cho bài viết đó nhé.

#7: Độc giả không bao giờ biết được bạn đã sử dụng tính năng hẹn giờ cho bài viết

Khi bạn cập nhật bằng các công cụ như HootSuite hoặc BufferApp, mọi người sẽ biết bạn đang cập nhật thông qua một công cụ. Nhưng đối với các bài viết được hẹn giờ trên Facebook, không ai có thể biết được điều đó.
buffer app

Tên công cụ bạn sử dụng để cập nhật sẽ xuất hiện dưới bài viết.

Sử dụng một công cụ khác để cập nhật Facebook không phải là ý kiến tồi. Đôi khi bạn nên tiết kiệm thời gian cho bản thân và cập nhật Facebook bằng công cụ hơn là không cập nhật gì cả. Nhưng Facebook luôn thiếu ưu tiên cho sự xuất hiện của các cập nhật sử dụng công cụ. Tôi biết rằng các công cụ cập nhật này hoạt động tốt trên Facebook nhưng chúng ta đều biết Facebook đã thay đổi thế nào.

#8: Tính năng hẹn giờ cho bài viết có thể sẽ có trên trang Facebook cá nhân

Tính năng này sẽ xuất hiện trên trang Facebook cá nhân, đây có thể là tin vui đối với những người sử dụng tài khoản cá nhân để quảng bá cho việc kinh doanh. Tuy nhiên trong khuôn khổ bài viết này, tôi không đưa ra điều gì cho thời điểm tương lai. Không phải ai cũng thấy những sự thay đổi lớn với tính năng hẹn giờ cho bài viết. Bạn vẫn phải chú ý đến nội dung bài viết trên Facebook. Nhưng tính năng hẹn giờ này cùa Facebook có thể giúp bạn tiết kiệm thời gian khi cho phép bạn hẹn giờ các bài viết cùng một lúc và sau đó bạn có thể dành thời gian làm việc khác.Bạn nghĩ sao về bài viết ngày? Bạn đã sử dụng chức năng hẹn giờ cho bài viết chưa? Bạn đã thu được kết quả thế nào? Hãy cho chúng tôi biết bằng cách để lại comment phía dưới.

nguồn : http://tranthutrangfc.wordpress.com/2012/08/16/8-meo-su-dung-tinh-nang-hen-gio-cho-bai-viet-tren-facebook

Mô hình 4P và Internet Marketing

Chuyên mục: Internet Marketing | 12/12/2012 | 1 Lượt xem | xếp hạng 9 | 68 bài đánh giá
Mô hình 4P và Internet Marketing

Rất nhiều người, thậm chí là những người đang làm marketing đôi khi có suy nghĩ, marketing chỉ gói gọn trong chữ Promotion

Trong marketing truyền thống, chúng ta có khá nhiều mô hình dùng để phân tích cho một chiến lược marketing. Dẫu là người thiên về thực hành hay thiên về lý thuyết, người chú trọng hiệu quả hay người thích mô phạm, dù ít dù nhiều khi bắt đầu một công việc marketing, chúng ta đều phải sử dụng một vài mô hình nào đó. Những mô hình này qua tháng năm đã chứng minh được những hiệu quả nhất định của nó, nó giúp cho marketer dễ dàng hơn và có hệ thống hơn trong các phân tích của mình.

5 năm trước khi bắt đầu vào Sony, chuyển từ làm marketing truyền thống sang internet marketing. Khi đó internet marketing còn khá mới mẻ, đặc biệt là ở Việt Nam – ngay cả trên thế giới khi đó cũng chưa phổ biến cụm từ này, đa số những người làm marketing online đều tự vạch ra những cách làm riêng cho mình. Khi đó tôi thường trăn trở một câu hỏi, làm thế nào để ứng dụng / hoặc nâng cấp những mô hình marketing hiện có sang cho internet marketing.

Xem tiếp :

Mô hình 4P và Internet Marketing

Thứ Hai, 10 tháng 12, 2012

C# – Tạo chương trình dạng Single-instance

C# – Tạo chương trình dạng Single-instance - chỉ có một phiên bản chạy

Đôi lúc chúng ta cần ngăn cản ứng dụng khởi chạy nhiều lần để làm giảm phiền toái cho người dùng. Vậy có cách nào để làm được điều này hay không. Sau đây tôi hướng đẫn bạn cách đơn giản nhất mà tôi hay dùng. Tuy nhiên tôi chỉ hướng đẫn phần cơ bản còn vận dụng như thế nào thì tùy ở mỏi người.
-Có 1 số cách để giải quyết vấn đề này, hay gặp là sử dụng Mutex và Process. Tuy nhiên chúng chỉ kiểm tra xem 1 instance của chuơng trình có đang chạy hay ko và ko thể điều khiển được instance đó (như việc active cửa sổ chính chẳng hạn).

Cách 1:
Sử dụng class System.Diagnostics.Process. Sau đây là đoạn code minh họa.
string current = System.Diagnostics.Process.GetCurrentProcess().ProcessName;  System.Diagnostics.Process[] procs;  procs = System.Diagnostics.Process.GetProcessesByName(current);  if (procs.Length >= 2)  {  MessageBox.Show("Process is already running!");  Application.Exit();  return;  }

Ở đây cần chú ý rằng. Cần phải kiểm tra Length >= 2 thì mới kết luận là ứng dụng đã khởi chạy rồi. Vì ứng dụng mình vừa chạy lên và ứng dụng cũ đang chạy là hai. Nếu có từ hai cái trở lên thì ứng dụng vừa chạy lên sẻ tắt process của nó đi. Vì vậy sẻ đảm bảo là một ứng dụng không có 2 Process chạy song song.
Cách này được tôi dùng phổ biến. Tuy nhiên phải tùy tùy biến lại chút ít cho trường hợp hai ứng dụng khác nhau nhưng được đặt trùng tên….

Cách 2  :

tận dụng thư viện Visual Basic trong .Net. Trước khi gõ code bạn hãy add reference thư viện Microsoft.VisualBasic vào.

AddReference

Phải add thư viện này bạn mới có thể dùng using Microsoft.VisualBasic.ApplicationServices mà ta sẽ sử dụng trong bài được.

Sửa file Program.cs như sau:

 

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
using Microsoft.VisualBasic.ApplicationServices;
namespace WindowsApplication1
{
static class Program
{
// Form chính cần gọi của chương trình phải đặt là static
static Form1 frm;
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
frm = new Form1();
SingleInstanceApplication.Run(frm, NewInstanceHandler);
}
public static void NewInstanceHandler(object sender,
StartupNextInstanceEventArgs e)
{
// Kích hoạt cửa sổ của instance đang chạy
// Bạn có thể thay thế bằng 1 hành động khác
frm.Activate();
}
/// <summary>
/// Lớp này dùng để gọi chạy form dạng single instance
/// </summary>
public class SingleInstanceApplication : WindowsFormsApplicationBase
{
private SingleInstanceApplication()
{
base.IsSingleInstance = true;
}
public static void Run(Form f,
StartupNextInstanceEventHandler startupHandler)
{
SingleInstanceApplication app = new SingleInstanceApplication();
app.MainForm = f;
app.StartupNextInstance += startupHandler;
app.Run(Environment.GetCommandLineArgs());
}
}
}
}


  Như bạn có thể thấy

Trích dẫn:
app.Run(Environment.GetCommandLineArgs());

Bạn có thể dễ dàng điều khiển instance đã chạy của mình bằng cách thiết lập các hành động sẽ xử lý tùy thuộc vào các tham số sẽ truyền vào thông qua dòng lệnh. Khi đó bạn có thể khởi tạo form như sau:

Code:

frm=new Form1(args[0]);

và trong constructor của Form1 bạn sẽ viết code kiểm tra và xử lý, ví dụ args[0]=="/scan" thì thực hiện lệnh scan máy chẳng hạn.

Hi vọng bài viết này giúp đỡ giải quyết 1 số vấn đề mà các bạn gặp phải.

(Sưu tầm)

Nếu thấy bài viết hữu ích hãy +1 giúp trang này : Dịch vụ Seo website giá rẻ có tại http://seowebsitegiare.com




Liên kết quảng cáo :