2009-07-23 33 views
8

Tôi cần hiển thị biểu mẫu ở dạng cấp cao nhất trên toàn hệ thống, ví dụ: trên/tất cả/các cửa sổ khác trên màn hình. Tôi nhận ra điều này thường là/thực hành UI xấu /, nhưng tôi có kịch bản rất cụ thể trong tâm trí.Làm thế nào để tạo mẫu hệ thống biểu mẫu bằng C#?

Chúng tôi dự định sử dụng máy tính Windows thông thường cho máy đăng ký tiền mặt POS. Có một tùy chọn trên màn hình để mở ngăn tiền mặt. Nó sẽ là khá xấu cho một người nào đó chỉ cần bấm một cái gì đó trên màn hình và nhận được quyền truy cập vào tiền khi nhân viên bán hàng không tìm kiếm. Vì vậy, chúng tôi trang bị máy tính với đầu đọc RFID và mỗi nhân viên bán hàng có thẻ RFID riêng của mình, thẻ này sẽ được sử dụng để xác thực.

Tuy nhiên, tôi cần một cơ chế để khóa máy tính (hoặc không sử dụng được) khi nhân viên bán hàng biến mất. Đăng xuất có vẻ quá nhiều phiền toái.

Mọi ý tưởng đều được chào đón.

LP, Dejan Mẫu

+0

Vì vậy, về cơ bản bạn muốn reimplement phần khóa của Windows? Vâng, chúc may mắn với việc bảo mật đủ tốt. –

+0

Không, tôi không có ý định làm điều đó. Lý tưởng nhất, tôi muốn/sử dụng/phần khóa của Windows. Nếu bạn có bất kỳ ý tưởng làm thế nào để làm điều đó từ C#, tôi rất vui khi được biết. –

+2

Nhân viên bán hàng có thể khóa cửa sổ bằng phím Win + L. Khi anh ấy trở lại anh ấy chỉ có thể mở khóa bằng cách nhập mật khẩu của anh ấy. Sẽ không làm việc? – chikak

Trả lời

8

Vâng, sau một ngày dùng thử và sai lầm tôi đã đến để giải quyết.

Nó bao gồm các bước sau:

1. Khi nút "Lock" được nhấn mới (trống)/desktop/được tạo ra. Chương trình được chạy trong máy tính để bàn này với hình thức toàn màn hình và thủ tục đăng nhập. Không có gì khác để chuyển sang hoặc chạy trên máy tính để bàn này.

2. Trình quản lý tác vụ bị tắt qua đăng ký. Tất nhiên, ai đó không được mời vẫn có thể truy cập menu Ctrl-Alt-Delete, nhưng không có gì gây hại cụ thể mà anh ta có thể làm ở đó.

3. Alt-F4 và những thứ này bị tắt.

4. Khi xác thực được thực hiện, chương trình sẽ chuyển về màn hình ban đầu và mọi thứ diễn ra như bình thường.

Có một số yêu cầu P/Yêu cầu, tất nhiên. Nếu ai đó muốn làm điều gì đó tương tự, có lẽ anh/cô ta sẽ tìm thấy xương trần ví dụ của tôi hữu ích - link text

LP, Dejan

-2

có một tài sản trên cùng.

thiết Form.TopMost = true

+0

Điều này không hữu ích. Có thể chỉ cần nhấn phím Windows. –

1

Tôi nghĩ rằng bạn sẽ cần phải nhìn vào gọi xuống Win32 API để đạt được điều này.

Bạn sẽ cần phải nhìn vào:

ShowWindowSetWindowPos

và gọi chúng với mã tương tự như sau (lưu ý đây là pseudo-code):

[DllImport("user32.dll")] 
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 

static void ShowTopmost(Form frm) 
{ 
    ShowWindow(frm.Handle, SW_SHOWMAXIMIZED); 
    SetWindowPos(frm.Handle.ToInt32(), HWND_TOPMOST, 
     0, 0, [width of desktop], [height of desktop], 
     SWP_SHOWWINDOW); 
} 
+0

Cảm ơn bạn đã đề xuất, mặc dù tôi đã đi một tuyến đường khác ... –

Các vấn đề liên quan